diff --git a/BUILD.gn b/BUILD.gn
index 4b37bbc..13c40d6 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -193,6 +193,7 @@
     "testing/test_support.cpp",
     "testing/test_support.h",
     "testing/utils/path_service.cpp",
+    "testing/utils/path_service.h",
   ]
   deps = [
     ":pdfium",
diff --git a/core/fpdfapi/page/fpdf_page_func_embeddertest.cpp b/core/fpdfapi/page/fpdf_page_func_embeddertest.cpp
index 2892036..6a1b87b 100644
--- a/core/fpdfapi/page/fpdf_page_func_embeddertest.cpp
+++ b/core/fpdfapi/page/fpdf_page_func_embeddertest.cpp
@@ -15,6 +15,7 @@
   FPDF_PAGE page = LoadPage(0);
   EXPECT_NE(nullptr, page);
   FPDF_BITMAP bitmap = RenderPage(page);
+  CompareBitmap(bitmap, 612, 792, "1940568c9ba33bac5d0b1ee9558c76b3");
   FPDFBitmap_Destroy(bitmap);
   UnloadPage(page);
 }
diff --git a/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp b/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp
index 639dcbf..9dfc26e 100644
--- a/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp
+++ b/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp
@@ -92,6 +92,7 @@
   EXPECT_TRUE(OpenDocument("bug_552046.pdf"));
   FPDF_PAGE page = LoadPage(0);
   FPDF_BITMAP bitmap = RenderPage(page);
+  CompareBitmap(bitmap, 612, 792, "1940568c9ba33bac5d0b1ee9558c76b3");
   FPDFBitmap_Destroy(bitmap);
   UnloadPage(page);
 }
@@ -102,6 +103,7 @@
   EXPECT_TRUE(OpenDocument("bug_555784.pdf"));
   FPDF_PAGE page = LoadPage(0);
   FPDF_BITMAP bitmap = RenderPage(page);
+  CompareBitmap(bitmap, 612, 792, "1940568c9ba33bac5d0b1ee9558c76b3");
   FPDFBitmap_Destroy(bitmap);
   UnloadPage(page);
 }
@@ -112,6 +114,13 @@
   EXPECT_TRUE(OpenDocument("bug_455199.pdf"));
   FPDF_PAGE page = LoadPage(0);
   FPDF_BITMAP bitmap = RenderPage(page);
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+  // Rendering on Mac is inconsistent, so skip this check.
+  const char* const kExpectedMd5sum = nullptr;
+#else
+  const char kExpectedMd5sum[] = "6f9f0fd903da177babb24dd50a806a56";
+#endif
+  CompareBitmap(bitmap, 200, 200, kExpectedMd5sum);
   FPDFBitmap_Destroy(bitmap);
   UnloadPage(page);
 }
diff --git a/core/fpdfapi/render/fpdf_render_loadimage_embeddertest.cpp b/core/fpdfapi/render/fpdf_render_loadimage_embeddertest.cpp
index 5c6a8c5..5b7cbc6 100644
--- a/core/fpdfapi/render/fpdf_render_loadimage_embeddertest.cpp
+++ b/core/fpdfapi/render/fpdf_render_loadimage_embeddertest.cpp
@@ -14,6 +14,7 @@
   FPDF_PAGE page = LoadPage(0);
   EXPECT_NE(nullptr, page);
   FPDF_BITMAP bitmap = RenderPage(page);
+  CompareBitmap(bitmap, 612, 792, "a14d7ee573c1b2456d7bf6b7762823cf");
   FPDFBitmap_Destroy(bitmap);
   UnloadPage(page);
 }
@@ -24,6 +25,7 @@
   FPDF_PAGE page = LoadPage(0);
   EXPECT_NE(nullptr, page);
   FPDF_BITMAP bitmap = RenderPage(page);
+  CompareBitmap(bitmap, 24, 24, "dc0ea1b743c2edb22c597cadc8537f7b");
   FPDFBitmap_Destroy(bitmap);
   UnloadPage(page);
 }
@@ -34,6 +36,7 @@
   FPDF_PAGE page = LoadPage(0);
   EXPECT_NE(nullptr, page);
   FPDF_BITMAP bitmap = RenderPage(page);
+  CompareBitmap(bitmap, 749, 749, "b9e75190cdc5edf0069a408744ca07dc");
   FPDFBitmap_Destroy(bitmap);
   UnloadPage(page);
 }
diff --git a/core/fpdfapi/render/fpdf_render_pattern_embeddertest.cpp b/core/fpdfapi/render/fpdf_render_pattern_embeddertest.cpp
index 176c923..ed6da46 100644
--- a/core/fpdfapi/render/fpdf_render_pattern_embeddertest.cpp
+++ b/core/fpdfapi/render/fpdf_render_pattern_embeddertest.cpp
@@ -12,6 +12,7 @@
   EXPECT_TRUE(OpenDocument("bug_547706.pdf"));
   FPDF_PAGE page = LoadPage(0);
   FPDF_BITMAP bitmap = RenderPage(page);
+  CompareBitmap(bitmap, 612, 792, "1940568c9ba33bac5d0b1ee9558c76b3");
   FPDFBitmap_Destroy(bitmap);
   UnloadPage(page);
 }
diff --git a/core/fxcodec/codec/fx_codec_embeddertest.cpp b/core/fxcodec/codec/fx_codec_embeddertest.cpp
index 441494c..fd02f97 100644
--- a/core/fxcodec/codec/fx_codec_embeddertest.cpp
+++ b/core/fxcodec/codec/fx_codec_embeddertest.cpp
@@ -14,6 +14,7 @@
   FPDF_PAGE page = LoadPage(0);
   EXPECT_NE(nullptr, page);
   FPDF_BITMAP bitmap = RenderPage(page);
+  CompareBitmap(bitmap, 691, 432, "24d75af646f8772c5ee7ced260452ae4");
   FPDFBitmap_Destroy(bitmap);
   UnloadPage(page);
 }
diff --git a/testing/DEPS b/testing/DEPS
index 4110b9b..5adeb41 100644
--- a/testing/DEPS
+++ b/testing/DEPS
@@ -1,14 +1,6 @@
 include_rules = [
-  '+core/fpdfapi',
-  '+core/fxcodec',
-  '+core/fxcrt',
-  '+core/fxge',
   '+core',
   '+fxjs',
   '+public',
   '+v8',
-  '+xfa/fde',
-  '+xfa/fgas',
-  '+xfa/fxfa/fm2js',
-  '+xfa/fxfa/parser',
 ]
diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp
index c23b5c8..bc4c027 100644
--- a/testing/embedder_test.cpp
+++ b/testing/embedder_test.cpp
@@ -11,6 +11,7 @@
 #include <utility>
 #include <vector>
 
+#include "core/fdrm/crypto/fx_crypt.h"
 #include "public/fpdf_dataavail.h"
 #include "public/fpdf_edit.h"
 #include "public/fpdf_text.h"
@@ -35,14 +36,26 @@
 #endif  // V8_USE_EXTERNAL_STARTUP_DATA
 #endif  // PDF_ENABLE_V8
 
-}  // namespace
-
 FPDF_BOOL Is_Data_Avail(FX_FILEAVAIL* pThis, size_t offset, size_t size) {
   return true;
 }
 
 void Add_Segment(FX_DOWNLOADHINTS* pThis, size_t offset, size_t size) {}
 
+std::string CRYPT_ToBase16(const uint8_t* digest) {
+  static char const zEncode[] = "0123456789abcdef";
+  std::string ret;
+  ret.resize(32);
+  for (int i = 0, j = 0; i < 16; i++, j += 2) {
+    uint8_t a = digest[i];
+    ret[j] = zEncode[(a >> 4) & 0xf];
+    ret[j + 1] = zEncode[a & 0xf];
+  }
+  return ret;
+}
+
+}  // namespace
+
 EmbedderTest::EmbedderTest()
     : default_delegate_(new EmbedderTest::Delegate()),
       document_(nullptr),
@@ -323,6 +336,25 @@
                                                               page_index);
 }
 
+// static
+void EmbedderTest::CompareBitmap(FPDF_BITMAP bitmap,
+                                 int expected_width,
+                                 int expected_height,
+                                 const char* expected_md5sum) {
+  ASSERT_EQ(expected_width, FPDFBitmap_GetWidth(bitmap));
+  ASSERT_EQ(expected_height, FPDFBitmap_GetHeight(bitmap));
+  const int expected_stride = expected_width * 4;
+  ASSERT_EQ(expected_stride, FPDFBitmap_GetStride(bitmap));
+
+  if (!expected_md5sum)
+    return;
+
+  uint8_t digest[16];
+  CRYPT_MD5Generate(static_cast<uint8_t*>(FPDFBitmap_GetBuffer(bitmap)),
+                    expected_stride * expected_height, digest);
+  EXPECT_EQ(expected_md5sum, CRYPT_ToBase16(digest));
+}
+
 // Can't use gtest-provided main since we need to stash the path to the
 // executable in order to find the external V8 binary data files.
 int main(int argc, char** argv) {
diff --git a/testing/embedder_test.h b/testing/embedder_test.h
index dc4ca0d..cc0caec 100644
--- a/testing/embedder_test.h
+++ b/testing/embedder_test.h
@@ -105,6 +105,12 @@
   // is prohibited after this call is made.
   virtual void UnloadPage(FPDF_PAGE page);
 
+  // Check |bitmap| to make sure it has the right dimensions and content.
+  static void CompareBitmap(FPDF_BITMAP bitmap,
+                            int expected_width,
+                            int expected_height,
+                            const char* expected_md5sum);
+
  protected:
   void SetupFormFillEnvironment();
 
diff --git a/testing/libfuzzer/DEPS b/testing/libfuzzer/DEPS
new file mode 100644
index 0000000..b1d034e
--- /dev/null
+++ b/testing/libfuzzer/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+  '+xfa',
+]
