diff --git a/core/fpdfapi/page/cpdf_page.cpp b/core/fpdfapi/page/cpdf_page.cpp
index 2579dcd..3c38364 100644
--- a/core/fpdfapi/page/cpdf_page.cpp
+++ b/core/fpdfapi/page/cpdf_page.cpp
@@ -196,8 +196,8 @@
   return GetDict()->GetArrayFor("Annots");
 }
 
-void CPDF_Page::SetPageImageCache(std::unique_ptr<CPDF_PageImageCache> pCache) {
-  m_pPageImageCache = std::move(pCache);
+void CPDF_Page::AddPageImageCache() {
+  m_pPageImageCache = std::make_unique<CPDF_PageImageCache>(this);
 }
 
 void CPDF_Page::SetRenderContext(std::unique_ptr<RenderContextIface> pContext) {
diff --git a/core/fpdfapi/page/cpdf_page.h b/core/fpdfapi/page/cpdf_page.h
index 19ed128..40357d4 100644
--- a/core/fpdfapi/page/cpdf_page.h
+++ b/core/fpdfapi/page/cpdf_page.h
@@ -79,12 +79,9 @@
   RetainPtr<CPDF_Array> GetMutableAnnotsArray();
   RetainPtr<const CPDF_Array> GetAnnotsArray() const;
 
+  void AddPageImageCache();
   CPDF_PageImageCache* GetPageImageCache() { return m_pPageImageCache.get(); }
-  void SetPageImageCache(std::unique_ptr<CPDF_PageImageCache> pCache);
-
-  RenderContextIface* GetRenderContext() const {
-    return m_pRenderContext.get();
-  }
+  RenderContextIface* GetRenderContext() { return m_pRenderContext.get(); }
 
   // `pContext` cannot be null. `SetRenderContext()` cannot be called if the
   // page already has a render context. Use `ClearRenderContext()` to reset the
diff --git a/fpdfsdk/fpdf_editpage.cpp b/fpdfsdk/fpdf_editpage.cpp
index bdb6a3c..f80652c 100644
--- a/fpdfsdk/fpdf_editpage.cpp
+++ b/fpdfsdk/fpdf_editpage.cpp
@@ -221,7 +221,7 @@
 #endif  // PDF_ENABLE_XFA
 
   auto pPage = pdfium::MakeRetain<CPDF_Page>(pDoc, pPageDict);
-  pPage->SetPageImageCache(std::make_unique<CPDF_PageImageCache>(pPage.Get()));
+  pPage->AddPageImageCache();
   pPage->ParseContent();
 
   return FPDFPageFromIPDFPage(pPage.Leak());  // Caller takes ownership.
diff --git a/fpdfsdk/fpdf_ppo.cpp b/fpdfsdk/fpdf_ppo.cpp
index a4f2365..86a0f39 100644
--- a/fpdfsdk/fpdf_ppo.cpp
+++ b/fpdfsdk/fpdf_ppo.cpp
@@ -564,8 +564,7 @@
         return false;
 
       auto pSrcPage = pdfium::MakeRetain<CPDF_Page>(src(), pSrcPageDict);
-      pSrcPage->SetPageImageCache(
-          std::make_unique<CPDF_PageImageCache>(pSrcPage.Get()));
+      pSrcPage->AddPageImageCache();
       NupPageSettings settings =
           nupState.CalculateNewPagePosition(pSrcPage->GetPageSize());
       bsContent += AddSubPage(pSrcPage, settings);
diff --git a/fpdfsdk/fpdf_view.cpp b/fpdfsdk/fpdf_view.cpp
index 7c5050c..91522c3 100644
--- a/fpdfsdk/fpdf_view.cpp
+++ b/fpdfsdk/fpdf_view.cpp
@@ -407,7 +407,7 @@
     return nullptr;
 
   auto pPage = pdfium::MakeRetain<CPDF_Page>(pDoc, std::move(pDict));
-  pPage->SetPageImageCache(std::make_unique<CPDF_PageImageCache>(pPage.Get()));
+  pPage->AddPageImageCache();
   pPage->ParseContent();
 
   return FPDFPageFromIPDFPage(pPage.Leak());
@@ -957,7 +957,7 @@
     return false;
 
   auto page = pdfium::MakeRetain<CPDF_Page>(pDoc, std::move(pDict));
-  page->SetPageImageCache(std::make_unique<CPDF_PageImageCache>(page.Get()));
+  page->AddPageImageCache();
   size->width = page->GetPageWidth();
   size->height = page->GetPageHeight();
   return true;
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp
index 5523845..2d1a9ae 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp
@@ -124,8 +124,7 @@
   DCHECK(pPageDict);
   m_pPDFPage =
       pdfium::MakeRetain<CPDF_Page>(GetDocument(), std::move(pPageDict));
-  m_pPDFPage->SetPageImageCache(
-      std::make_unique<CPDF_PageImageCache>(m_pPDFPage.Get()));
+  m_pPDFPage->AddPageImageCache();
   m_pPDFPage->ParseContent();
 }
 
diff --git a/fxjs/cjs_document.cpp b/fxjs/cjs_document.cpp
index 9a5293f..0b944db 100644
--- a/fxjs/cjs_document.cpp
+++ b/fxjs/cjs_document.cpp
@@ -1247,7 +1247,7 @@
     return CJS_Result::Failure(JSMessage::kBadObjectError);
 
   auto page = pdfium::MakeRetain<CPDF_Page>(pDocument, std::move(pPageDict));
-  page->SetPageImageCache(std::make_unique<CPDF_PageImageCache>(page.Get()));
+  page->AddPageImageCache();
   page->ParseContent();
 
   int nWords = 0;
@@ -1303,7 +1303,7 @@
     return CJS_Result::Failure(JSMessage::kBadObjectError);
 
   auto page = pdfium::MakeRetain<CPDF_Page>(pDocument, std::move(pPageDict));
-  page->SetPageImageCache(std::make_unique<CPDF_PageImageCache>(page.Get()));
+  page->AddPageImageCache();
   page->ParseContent();
 
   int nWords = 0;
