diff --git a/core/fpdfapi/edit/cpdf_creator_embeddertest.cpp b/core/fpdfapi/edit/cpdf_creator_embeddertest.cpp
index 7d1fb30..86cd67b 100644
--- a/core/fpdfapi/edit/cpdf_creator_embeddertest.cpp
+++ b/core/fpdfapi/edit/cpdf_creator_embeddertest.cpp
@@ -25,11 +25,12 @@
   {
     // Do some read only operations.
     ASSERT_GE(1, FPDF_GetPageCount(document()));
-    FPDF_PAGE page = FPDF_LoadPage(document(), 0);
+    FPDF_PAGE page = LoadPage(0);
     ASSERT_TRUE(page);
-    FPDF_BITMAP new_bitmap =
-        RenderPageWithFlagsDeprecated(page, form_handle(), FPDF_ANNOT);
-    FPDFBitmap_Destroy(new_bitmap);
+    std::unique_ptr<void, FPDFBitmapDeleter> bitmap =
+        RenderLoadedPageWithFlags(page, FPDF_ANNOT);
+    EXPECT_EQ(595, FPDFBitmap_GetWidth(bitmap.get()));
+    EXPECT_EQ(842, FPDFBitmap_GetHeight(bitmap.get()));
     UnloadPage(page);
   }
 
diff --git a/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp b/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
index 6c1a0e9..df7b5b6 100644
--- a/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
+++ b/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
 #include <string>
 
 #include "core/fxcrt/fx_system.h"
@@ -58,9 +59,8 @@
     EXPECT_TRUE(FPDFPath_SetFillColor(red_rect, 255, 0, 0, 255));
     EXPECT_TRUE(FPDFPath_SetDrawMode(red_rect, FPDF_FILLMODE_ALTERNATE, 0));
     FPDFPage_InsertObject(page, red_rect);
-    FPDF_BITMAP page_bitmap = RenderPageDeprecated(page);
-    CompareBitmap(page_bitmap, 612, 792, md5);
-    FPDFBitmap_Destroy(page_bitmap);
+    std::unique_ptr<void, FPDFBitmapDeleter> bitmap = RenderLoadedPage(page);
+    CompareBitmap(bitmap.get(), 612, 792, md5);
     EXPECT_TRUE(FPDFPage_GenerateContent(page));
     SetWholeFileAvailable();
     EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
diff --git a/core/fxcodec/codec/fx_codec_embeddertest.cpp b/core/fxcodec/codec/fx_codec_embeddertest.cpp
index 50a15c3..40a1662 100644
--- a/core/fxcodec/codec/fx_codec_embeddertest.cpp
+++ b/core/fxcodec/codec/fx_codec_embeddertest.cpp
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
+
 #include "testing/embedder_test.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -12,9 +14,8 @@
   // Should not crash.
   EXPECT_TRUE(OpenDocument("bug_631912.pdf"));
   FPDF_PAGE page = LoadPage(0);
-  EXPECT_NE(nullptr, page);
-  FPDF_BITMAP bitmap = RenderPageDeprecated(page);
-  CompareBitmap(bitmap, 691, 432, "24d75af646f8772c5ee7ced260452ae4");
-  FPDFBitmap_Destroy(bitmap);
+  ASSERT_TRUE(page);
+  std::unique_ptr<void, FPDFBitmapDeleter> bitmap = RenderLoadedPage(page);
+  CompareBitmap(bitmap.get(), 691, 432, "24d75af646f8772c5ee7ced260452ae4");
   UnloadPage(page);
 }
diff --git a/core/fxge/fx_ge_text_embeddertest.cpp b/core/fxge/fx_ge_text_embeddertest.cpp
index 7aeb3f3..362ccf5 100644
--- a/core/fxge/fx_ge_text_embeddertest.cpp
+++ b/core/fxge/fx_ge_text_embeddertest.cpp
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
+
 #include "testing/embedder_test.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -11,8 +13,9 @@
   // Shouldn't crash.
   EXPECT_TRUE(OpenDocument("bug_601362.pdf"));
   FPDF_PAGE page = LoadPage(0);
-  EXPECT_NE(nullptr, page);
-  FPDF_BITMAP bitmap = RenderPageDeprecated(page);
-  FPDFBitmap_Destroy(bitmap);
+  ASSERT_TRUE(page);
+  std::unique_ptr<void, FPDFBitmapDeleter> bitmap = RenderLoadedPage(page);
+  EXPECT_EQ(612, FPDFBitmap_GetWidth(bitmap.get()));
+  EXPECT_EQ(792, FPDFBitmap_GetHeight(bitmap.get()));
   UnloadPage(page);
 }
diff --git a/fpdfsdk/fpdfsave_embeddertest.cpp b/fpdfsdk/fpdfsave_embeddertest.cpp
index bbf7566..e753ba0 100644
--- a/fpdfsdk/fpdfsave_embeddertest.cpp
+++ b/fpdfsdk/fpdfsave_embeddertest.cpp
@@ -66,11 +66,11 @@
   EXPECT_TRUE(OpenDocument("linearized.pdf"));
   for (int i = 0; i < kPageCount; ++i) {
     FPDF_PAGE page = LoadPage(i);
-    FPDF_BITMAP bitmap = RenderPageDeprecated(page);
-    EXPECT_EQ(612, FPDFBitmap_GetWidth(bitmap));
-    EXPECT_EQ(792, FPDFBitmap_GetHeight(bitmap));
-    original_md5[i] = HashBitmap(bitmap);
-    FPDFBitmap_Destroy(bitmap);
+    ASSERT_TRUE(page);
+    std::unique_ptr<void, FPDFBitmapDeleter> bitmap = RenderLoadedPage(page);
+    EXPECT_EQ(612, FPDFBitmap_GetWidth(bitmap.get()));
+    EXPECT_EQ(792, FPDFBitmap_GetHeight(bitmap.get()));
+    original_md5[i] = HashBitmap(bitmap.get());
     UnloadPage(page);
   }
 
