diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc
index da2d1f6..421df39 100644
--- a/samples/pdfium_test.cc
+++ b/samples/pdfium_test.cc
@@ -7,6 +7,7 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include <map>
 #include <sstream>
 #include <string>
 #include <utility>
@@ -53,6 +54,14 @@
 #endif
 };
 
+// Hold a map of the currently loaded pages in order to avoid them
+// to get loaded twice.
+std::map<int, FPDF_PAGE> g_loadedPages;
+
+// Hold a global pointer of FPDF_FORMHANDLE so that PDFium
+// app hooks can made use of it.
+FPDF_FORMHANDLE g_formHandle;
+
 struct Options {
   Options()
       : show_config(false), send_events(false), output_format(OUTPUT_NONE) {}
@@ -520,19 +529,35 @@
   }
 }
 
+FPDF_PAGE GetPageForIndex(FPDF_FORMFILLINFO* param,
+                          FPDF_DOCUMENT doc,
+                          int index) {
+  auto iter = g_loadedPages.find(index);
+  if (iter != g_loadedPages.end())
+    return iter->second;
+
+  FPDF_PAGE page = FPDF_LoadPage(doc, index);
+  if (!page)
+    return nullptr;
+
+  FORM_OnAfterLoadPage(page, g_formHandle);
+  FORM_DoPageAAction(page, g_formHandle, FPDFPAGE_AACTION_OPEN);
+
+  g_loadedPages[index] = page;
+  return page;
+}
+
 bool RenderPage(const std::string& name,
-                const FPDF_DOCUMENT& doc,
-                const FPDF_FORMHANDLE& form,
+                FPDF_DOCUMENT doc,
+                FPDF_FORMHANDLE& form,
                 const int page_index,
                 const Options& options,
                 const std::string& events) {
-  FPDF_PAGE page = FPDF_LoadPage(doc, page_index);
+  FPDF_PAGE page = GetPageForIndex(nullptr, doc, page_index);
   if (!page)
     return false;
 
   FPDF_TEXTPAGE text_page = FPDFText_LoadPage(page);
-  FORM_OnAfterLoadPage(page, form);
-  FORM_DoPageAAction(page, form, FPDFPAGE_AACTION_OPEN);
 
   if (options.send_events)
     SendPageEvents(form, page, events);
@@ -593,6 +618,8 @@
   } else {
     fprintf(stderr, "Page was too large to be rendered.\n");
   }
+
+  g_loadedPages.erase(page_index);
   FORM_DoPageAAction(page, form, FPDFPAGE_AACTION_CLOSE);
   FORM_OnBeforeClosePage(page, form);
   FPDFText_ClosePage(text_page);
@@ -620,6 +647,7 @@
 #else   // PDF_ENABLE_XFA
   form_callbacks.version = 1;
 #endif  // PDF_ENABLE_XFA
+  form_callbacks.FFI_GetPage = GetPageForIndex;
   form_callbacks.m_pJsPlatform = &platform_callbacks;
 
   TestLoader loader(pBuf, len);
@@ -703,7 +731,8 @@
 
   (void)FPDF_GetDocPermissions(doc);
 
-  FPDF_FORMHANDLE form = FPDFDOC_InitFormFillEnvironment(doc, &form_callbacks);
+  FPDF_FORMHANDLE form = g_formHandle =
+      FPDFDOC_InitFormFillEnvironment(doc, &form_callbacks);
 #ifdef PDF_ENABLE_XFA
   int docType = DOCTYPE_PDF;
   if (FPDF_HasXFAField(doc, &docType) && docType != DOCTYPE_PDF &&
diff --git a/testing/resources/pixel/bug_492.pdf b/testing/resources/pixel/bug_492.pdf
new file mode 100644
index 0000000..3a6486d
--- /dev/null
+++ b/testing/resources/pixel/bug_492.pdf
Binary files differ
diff --git a/testing/resources/pixel/bug_492.pdf.0.png b/testing/resources/pixel/bug_492.pdf.0.png
new file mode 100644
index 0000000..c0fc1f4
--- /dev/null
+++ b/testing/resources/pixel/bug_492.pdf.0.png
Binary files differ
