diff --git a/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp b/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
index 6ac481b..fda5ed9 100644
--- a/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
+++ b/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
@@ -135,20 +135,12 @@
 
 TEST_F(CPDFSecurityHandlerEmbedderTest, PasswordAfterGenerateSave) {
 #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
-#if defined(OS_WIN)
-  const char kChecksum[] = "06fe5a97341b3e0f0a22ccc242fd9040";
-#else
-  const char kChecksum[] = "169c8e3acea8fba5a40f695bbbc96273";
-#endif  // defined(OS_WIN)
-#else
-#if defined(OS_WIN)
-  const char kChecksum[] = "041c2fb541c8907cc22ce101b686c79e";
+  const char kChecksum[] = "c3c4fc0032f5d252327bf52d29a074fa";
 #elif defined(OS_APPLE)
-  const char kChecksum[] = "1ace03eb7c466c132aacf319cb9d69d3";
+  const char kChecksum[] = "2a308e8cc20a6221112c387d122075a8";
 #else
-  const char kChecksum[] = "7048dca58e2ed8f93339008b91e4eb4e";
+  const char kChecksum[] = "9fe7eef8e51d15a604001854be6ed1ee";
 #endif
-#endif  // defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
   {
     ASSERT_TRUE(OpenDocumentWithOptions("encrypted.pdf", "5678",
                                         LinearizeOption::kMustLinearize,
diff --git a/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp b/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
index 705e0f6..c121bdd 100644
--- a/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
+++ b/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
@@ -23,25 +23,15 @@
 constexpr FX_ARGB kWhite = 0xFFFFFFFF;
 
 #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 static constexpr char kAnnotationStampWithApBaseContentChecksum[] =
-    "fbd62f1df1cae1fd2fbf5a24bed6b4cd";
-#else
-static constexpr char kAnnotationStampWithApBaseContentChecksum[] =
-    "44e6dd3c36d8bbfb38d306b442e61241";
-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
-#else
-#if defined(OS_WIN)
-static constexpr char kAnnotationStampWithApBaseContentChecksum[] =
-    "91c59c89f03be6c12a9af956b9955c47";
+    "1a6cb54b1cfc5bb9f6ec3923a52ea7cc";
 #elif defined(OS_APPLE)
 static constexpr char kAnnotationStampWithApBaseContentChecksum[] =
-    "83e9f5222c4c959b0b63a5cd24f773a1";
+    "243f3d6267d9db09198fed9f8c4957fd";
 #else
 static constexpr char kAnnotationStampWithApBaseContentChecksum[] =
-    "a24edc7740f1d6f76899652dcf825dea";
+    "e31414933c9ff3950773981e5bf61678";
 #endif
-#endif  // defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
 
 }  // namespace
 
@@ -324,19 +314,14 @@
 // Test rendering of text with forced color scheme on.
 #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
   static constexpr char kContentWithTextChecksum[] =
-      "f6d0e8b9e508d4e993bae678f5f3baa7";
-#else
-#if defined(OS_WIN)
-  static constexpr char kContentWithTextChecksum[] =
-      "4245f32cc11748a00fd69852a5e5808d";
+      "6bbe5a547115b4aa30b49fe7c34030e3";
 #elif defined(OS_APPLE)
   static constexpr char kContentWithTextChecksum[] =
-      "754a742f10ce0926b766dc3dd47d1f64";
+      "ee4ec12f54ce8d117a73bd9b85a8954d";
 #else
   static constexpr char kContentWithTextChecksum[] =
-      "f14d3caba5a973a28be8653aac9e4df3";
+      "704db63ed2bf77254ecaa8035b85f21a";
 #endif
-#endif  // defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
 
   ASSERT_TRUE(OpenDocument("hello_world.pdf"));
 
@@ -488,25 +473,15 @@
 TEST_F(FPDFProgressiveRenderEmbedderTest, RenderStampWithColorScheme) {
 // Test rendering of static annotation with forced color scheme on.
 #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
-#if defined(OS_WIN) || defined(OS_APPLE)
   static constexpr char kContentWithStampChecksum[] =
-      "77cd4865c3780d69a61d4225ee10c41f";
-#else
-  static constexpr char kContentWithStampChecksum[] =
-      "6d8cb124dee49ebda757f8872a7bbef2";
-#endif  // defined(OS_WIN) || defined(OS_APPLE)
-#else
-#if defined(OS_WIN)
-  static constexpr char kContentWithStampChecksum[] =
-      "2f91d6e380cc85b3f700bc7eb9bc0cef";
+      "bdcd2b91223b1a73582b341d0153a73f";
 #elif defined(OS_APPLE)
   static constexpr char kContentWithStampChecksum[] =
-      "e2d9bef817d366021e5727d9350bde43";
+      "7a209e29caeeab7d2b25b34570a4ace6";
 #else
   static constexpr char kContentWithStampChecksum[] =
-      "d5518b1d9765fa62897a24d12244080f";
+      "3bbbfc6cc18801906285a232c4a20617";
 #endif
-#endif  // defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
 
   ASSERT_TRUE(OpenDocument("annotation_stamp_with_ap.pdf"));
 
diff --git a/core/fxge/cfx_folderfontinfo.cpp b/core/fxge/cfx_folderfontinfo.cpp
index 7017ec9..7e69136 100644
--- a/core/fxge/cfx_folderfontinfo.cpp
+++ b/core/fxge/cfx_folderfontinfo.cpp
@@ -317,8 +317,11 @@
                                    const ByteString& family,
                                    bool bMatchName) {
   FontFaceInfo* pFind = nullptr;
-  if (charset == FX_Charset::kANSI && FontFamilyIsFixedPitch(pitch_family))
-    return GetFont("Courier New");
+  if (charset == FX_Charset::kANSI && FontFamilyIsFixedPitch(pitch_family)) {
+    auto* courier_new = GetFont("Courier New");
+    if (courier_new)
+      return courier_new;
+  }
 
   ByteStringView bsFamily = family.AsStringView();
   uint32_t charset_flag = GetCharset(charset);
diff --git a/core/fxge/cfx_fontmapper.cpp b/core/fxge/cfx_fontmapper.cpp
index 3f0e59b..7c44223 100644
--- a/core/fxge/cfx_fontmapper.cpp
+++ b/core/fxge/cfx_fontmapper.cpp
@@ -292,6 +292,10 @@
   m_pFontInfo = std::move(pFontInfo);
 }
 
+std::unique_ptr<SystemFontInfoIface> CFX_FontMapper::TakeSystemFontInfo() {
+  return std::move(m_pFontInfo);
+}
+
 uint32_t CFX_FontMapper::GetChecksumFromTT(void* hFont) {
   uint32_t buffer[256];
   m_pFontInfo->GetFontData(
diff --git a/core/fxge/cfx_fontmapper.h b/core/fxge/cfx_fontmapper.h
index b62372e..956232e 100644
--- a/core/fxge/cfx_fontmapper.h
+++ b/core/fxge/cfx_fontmapper.h
@@ -58,6 +58,7 @@
   }
 
   void SetSystemFontInfo(std::unique_ptr<SystemFontInfoIface> pFontInfo);
+  std::unique_ptr<SystemFontInfoIface> TakeSystemFontInfo();
   void AddInstalledFont(const ByteString& name, FX_Charset charset);
   void LoadInstalledFonts();
 
