diff --git a/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp b/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
index 91e625a..834ed8c 100644
--- a/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
+++ b/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
@@ -81,11 +81,11 @@
 
   for (const auto& test : tests) {
     OpenSavedDocument(test.password);
-    LoadSavedPage();
-    VerifySavedRendering(612, 792, md5);
+    FPDF_PAGE page = LoadSavedPage(0);
+    VerifySavedRendering(page, 612, 792, md5);
     EXPECT_EQ(test.permissions, FPDF_GetDocPermissions(m_SavedDocument));
 
-    CloseSavedPage();
+    CloseSavedPage(page);
     CloseSavedDocument();
   }
 }
diff --git a/fpdfsdk/fpdfannot_embeddertest.cpp b/fpdfsdk/fpdfannot_embeddertest.cpp
index c49e77b..dce6582 100644
--- a/fpdfsdk/fpdfannot_embeddertest.cpp
+++ b/fpdfsdk/fpdfannot_embeddertest.cpp
@@ -286,15 +286,15 @@
   const char md5[] = "dba153419f67b7c0c0e3d22d3e8910d5";
 
   OpenSavedDocument();
-  LoadSavedPage();
-  VerifySavedRendering(612, 792, md5);
+  page = LoadSavedPage(0);
+  VerifySavedRendering(page, 612, 792, md5);
 
   // Check that the saved document has 2 annotations on the first page
-  EXPECT_EQ(2, FPDFPage_GetAnnotCount(m_SavedPage));
+  EXPECT_EQ(2, FPDFPage_GetAnnotCount(page));
 
   // Check that the second annotation is an underline annotation and verify
   // its quadpoints.
-  FPDF_ANNOTATION new_annot = FPDFPage_GetAnnot(m_SavedPage, 1);
+  FPDF_ANNOTATION new_annot = FPDFPage_GetAnnot(page, 1);
   ASSERT_TRUE(new_annot);
   EXPECT_EQ(FPDF_ANNOT_UNDERLINE, FPDFAnnot_GetSubtype(new_annot));
   FS_QUADPOINTSF new_quadpoints;
@@ -306,7 +306,7 @@
 
   FPDFPage_CloseAnnot(new_annot);
 
-  CloseSavedPage();
+  CloseSavedPage(page);
   CloseSavedDocument();
 }
 
@@ -591,12 +591,12 @@
 
   // Open the saved document.
   OpenSavedDocument();
-  LoadSavedPage();
-  VerifySavedRendering(595, 842, md5_new_annot);
+  page = LoadSavedPage(0);
+  VerifySavedRendering(page, 595, 842, md5_new_annot);
 
   // Check that the document has a correct count of annotations and objects.
-  EXPECT_EQ(3, FPDFPage_GetAnnotCount(m_SavedPage));
-  annot = FPDFPage_GetAnnot(m_SavedPage, 2);
+  EXPECT_EQ(3, FPDFPage_GetAnnotCount(page));
+  annot = FPDFPage_GetAnnot(page, 2);
   ASSERT_TRUE(annot);
   EXPECT_EQ(1, FPDFAnnot_GetObjectCount(annot));
 
@@ -608,7 +608,7 @@
   EXPECT_EQ(rect.top, new_rect.top);
 
   FPDFPage_CloseAnnot(annot);
-  CloseSavedPage();
+  CloseSavedPage(page);
   CloseSavedDocument();
 }
 
@@ -870,9 +870,9 @@
   const char md5[] = "c96ee1f316d7f5a1b154de9f9d467f01";
 #endif
   OpenSavedDocument();
-  LoadSavedPage();
-  VerifySavedRendering(595, 842, md5);
-  FPDF_ANNOTATION new_annot = FPDFPage_GetAnnot(m_SavedPage, 0);
+  page = LoadSavedPage(0);
+  VerifySavedRendering(page, 595, 842, md5);
+  FPDF_ANNOTATION new_annot = FPDFPage_GetAnnot(page, 0);
 
   // Check that the string value of the modified date is the newly-set value.
   EXPECT_EQ(FPDF_OBJECT_STRING, FPDFAnnot_GetValueType(new_annot, kDateKey));
@@ -886,7 +886,7 @@
                    .c_str());
 
   FPDFPage_CloseAnnot(new_annot);
-  CloseSavedPage();
+  CloseSavedPage(page);
   CloseSavedDocument();
 }
 
diff --git a/fpdfsdk/fpdfedit_embeddertest.cpp b/fpdfsdk/fpdfedit_embeddertest.cpp
index f1f02ff..6cb2771 100644
--- a/fpdfsdk/fpdfedit_embeddertest.cpp
+++ b/fpdfsdk/fpdfedit_embeddertest.cpp
@@ -457,31 +457,31 @@
   UnloadPage(page);
 
   OpenSavedDocument();
-  LoadSavedPage();
-  VerifySavedRendering(612, 792, "ad04e5bd0f471a9a564fb034bd0fb073");
+  page = LoadSavedPage(0);
+  VerifySavedRendering(page, 612, 792, "ad04e5bd0f471a9a564fb034bd0fb073");
 
   ClearString();
   // Add another opaque rectangle on top of the existing content
   FPDF_PAGEOBJECT green_rect = FPDFPageObj_CreateNewRect(150, 700, 25, 50);
   EXPECT_TRUE(FPDFPath_SetFillColor(green_rect, 0, 255, 0, 255));
   EXPECT_TRUE(FPDFPath_SetDrawMode(green_rect, FPDF_FILLMODE_ALTERNATE, 0));
-  FPDFPage_InsertObject(m_SavedPage, green_rect);
+  FPDFPage_InsertObject(page, green_rect);
 
   // Add another transparent rectangle on top of existing content
   FPDF_PAGEOBJECT green_rect2 = FPDFPageObj_CreateNewRect(175, 700, 25, 50);
   EXPECT_TRUE(FPDFPath_SetFillColor(green_rect2, 0, 255, 0, 100));
   EXPECT_TRUE(FPDFPath_SetDrawMode(green_rect2, FPDF_FILLMODE_ALTERNATE, 0));
-  FPDFPage_InsertObject(m_SavedPage, green_rect2);
-  FPDF_BITMAP new_bitmap = RenderPageWithFlags(m_SavedPage, m_SavedForm, 0);
+  FPDFPage_InsertObject(page, green_rect2);
+  FPDF_BITMAP new_bitmap = RenderPageWithFlags(page, m_SavedForm, 0);
   const char last_md5[] = "4b5b00f824620f8c9b8801ebb98e1cdd";
   CompareBitmap(new_bitmap, 612, 792, last_md5);
   FPDFBitmap_Destroy(new_bitmap);
-  EXPECT_TRUE(FPDFPage_GenerateContent(m_SavedPage));
+  EXPECT_TRUE(FPDFPage_GenerateContent(page));
 
   // Now save the result, closing the page and document
   EXPECT_TRUE(FPDF_SaveAsCopy(m_SavedDocument, this, 0));
 
-  CloseSavedPage();
+  CloseSavedPage(page);
   CloseSavedDocument();
 
   // Render the saved result
diff --git a/fpdfsdk/fpdfeditpath_embeddertest.cpp b/fpdfsdk/fpdfeditpath_embeddertest.cpp
index 71af2fa..59e5dbb 100644
--- a/fpdfsdk/fpdfeditpath_embeddertest.cpp
+++ b/fpdfsdk/fpdfeditpath_embeddertest.cpp
@@ -32,7 +32,7 @@
   page = nullptr;
 
   OpenSavedDocument();
-  page = LoadSavedPage();
+  page = LoadSavedPage(0);
   ASSERT(page);
 
   for (size_t i = 0; i < 256; ++i) {
@@ -58,6 +58,6 @@
     EXPECT_EQ(i, a);
   }
 
-  CloseSavedPage();
+  CloseSavedPage(page);
   CloseSavedDocument();
 }
diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp
index 4c29c06..36ee08f 100644
--- a/testing/embedder_test.cpp
+++ b/testing/embedder_test.cpp
@@ -326,7 +326,6 @@
 }
 
 void EmbedderTest::CloseSavedDocument() {
-  ASSERT(!m_SavedPage);
   ASSERT(m_SavedDocument);
 
   FPDFDOC_ExitFormFillEnvironment(m_SavedForm);
@@ -338,39 +337,38 @@
   m_SavedAvail = nullptr;
 }
 
-FPDF_PAGE EmbedderTest::LoadSavedPage() {
+FPDF_PAGE EmbedderTest::LoadSavedPage(int page_number) {
   ASSERT(m_SavedDocument);
 
-  EXPECT_EQ(1, FPDF_GetPageCount(m_SavedDocument));
-  m_SavedPage = FPDF_LoadPage(m_SavedDocument, 0);
+  EXPECT_LT(page_number, FPDF_GetPageCount(m_SavedDocument));
+  FPDF_PAGE page = FPDF_LoadPage(m_SavedDocument, page_number);
 
-  ASSERT(m_SavedPage);
-  return m_SavedPage;
+  ASSERT(page);
+  return page;
 }
 
-void EmbedderTest::CloseSavedPage() {
-  ASSERT(m_SavedPage);
-  FPDF_ClosePage(m_SavedPage);
-  m_SavedPage = nullptr;
+void EmbedderTest::CloseSavedPage(FPDF_PAGE page) {
+  ASSERT(page);
+  FPDF_ClosePage(page);
 }
 
-void EmbedderTest::VerifySavedRendering(int width,
+void EmbedderTest::VerifySavedRendering(FPDF_PAGE page,
+                                        int width,
                                         int height,
                                         const char* md5) {
   ASSERT(m_SavedDocument);
-  ASSERT(m_SavedPage);
+  ASSERT(page);
 
-  FPDF_BITMAP new_bitmap =
-      RenderPageWithFlags(m_SavedPage, m_SavedForm, FPDF_ANNOT);
+  FPDF_BITMAP new_bitmap = RenderPageWithFlags(page, m_SavedForm, FPDF_ANNOT);
   CompareBitmap(new_bitmap, width, height, md5);
   FPDFBitmap_Destroy(new_bitmap);
 }
 
 void EmbedderTest::VerifySavedDocument(int width, int height, const char* md5) {
   OpenSavedDocument();
-  LoadSavedPage();
-  VerifySavedRendering(width, height, md5);
-  CloseSavedPage();
+  FPDF_PAGE page = LoadSavedPage(0);
+  VerifySavedRendering(page, width, height, md5);
+  CloseSavedPage(page);
   CloseSavedDocument();
 }
 
diff --git a/testing/embedder_test.h b/testing/embedder_test.h
index 606472b..df9e837 100644
--- a/testing/embedder_test.h
+++ b/testing/embedder_test.h
@@ -145,9 +145,12 @@
 
   FPDF_DOCUMENT OpenSavedDocument(const char* password = nullptr);
   void CloseSavedDocument();
-  FPDF_PAGE LoadSavedPage();
-  void CloseSavedPage();
-  void VerifySavedRendering(int width, int height, const char* md5);
+  FPDF_PAGE LoadSavedPage(int page_number);
+  void CloseSavedPage(FPDF_PAGE page);
+  void VerifySavedRendering(FPDF_PAGE page,
+                            int width,
+                            int height,
+                            const char* md5);
   void VerifySavedDocument(int width, int height, const char* md5);
 
   void SetWholeFileAvailable();
@@ -168,7 +171,6 @@
   std::map<int, FPDF_PAGE> page_map_;
   std::map<FPDF_PAGE, int> page_reverse_map_;
   FPDF_DOCUMENT m_SavedDocument;
-  FPDF_PAGE m_SavedPage;
   FPDF_FORMHANDLE m_SavedForm;
   FPDF_AVAIL m_SavedAvail;
   FPDF_FILEACCESS saved_file_access_;  // must outlive m_SavedAvail.
