diff --git a/DEPS b/DEPS
index 13b1443..0ec492c 100644
--- a/DEPS
+++ b/DEPS
@@ -140,7 +140,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling pdfium_tests
   # and whatever else without interference from each other.
-  'pdfium_tests_revision': '08f1b2bf9c1fc585cd7c3eb7f880302a17478d08',
+  'pdfium_tests_revision': '20e9894b12154d257612a2829a4b4a37e057267e',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling resultdb
   # and whatever else without interference from each other.
diff --git a/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp b/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
index cda7d91..a51e16e 100644
--- a/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
+++ b/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
@@ -433,9 +433,9 @@
     if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
       return "a791fdb4f595bb6c4187cc2aeed5e9e8";
 #if BUILDFLAG(IS_APPLE)
-    return "7a209e29caeeab7d2b25b34570a4ace6";
+    return "8170c539e95f22f14eb8f266a5f1bbed";
 #else
-    return "3bbbfc6cc18801906285a232c4a20617";
+    return "d1fd087e59d4dcebf47b56570bdb8c22";
 #endif
   }();
 
diff --git a/core/fxge/agg/fx_agg_driver.cpp b/core/fxge/agg/fx_agg_driver.cpp
index 4668659..a6fcb21 100644
--- a/core/fxge/agg/fx_agg_driver.cpp
+++ b/core/fxge/agg/fx_agg_driver.cpp
@@ -942,7 +942,7 @@
         agg::curve4 curve(pos0.x, pos0.y, pos.x, pos.y, pos2.x, pos2.y, pos3.x,
                           pos3.y);
         i += 2;
-        agg_path.add_path_curve(curve);
+        agg_path.add_path(curve);
       }
     }
     if (points[i].m_CloseFigure)
diff --git a/fpdfsdk/fpdf_annot_embeddertest.cpp b/fpdfsdk/fpdf_annot_embeddertest.cpp
index c1ad3a9..0fc27bc 100644
--- a/fpdfsdk/fpdf_annot_embeddertest.cpp
+++ b/fpdfsdk/fpdf_annot_embeddertest.cpp
@@ -1108,27 +1108,27 @@
     if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
       return "f671765166acf45d80e833ea3aff8b90";
 #if BUILDFLAG(IS_APPLE)
-    return "e31421f86c61d4e9cda138f15f561ca3";
+    return "34614087e04b729b7b8c37739dcf9af9";
 #else
-    return "980e7636d864f7f7d323a31ad4e8fa04";
+    return "31a94d22460171cd83169daf6a6956ee";
 #endif
   }();
   const char* md5_two_paths = []() {
     if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
       return "7d2db46e1ae6bcf88d18d334af309551";
 #if BUILDFLAG(IS_APPLE)
-    return "58d932492f9d485d6a4bc0ba76c04557";
+    return "6cdaf6b3e5145f435d8ccae6db5cf9af";
 #else
-    return "4c779c394b6790f8cf80305b566b663b";
+    return "ed49fefef45f14121f8150cde10006c4";
 #endif
   }();
   const char* md5_new_annot = []() {
     if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
       return "92bfb06058ff608571a3baf65f7fc05d";
 #if BUILDFLAG(IS_APPLE)
-    return "61f9ad13f2fd235753db198cf9704773";
+    return "55dab4f158fdc284e439b88c4306373c";
 #else
-    return "97effd68dcf86273f68d126d6b45152e";
+    return "cc08493b1f079803930388ecc703be9d";
 #endif
   }();
 
@@ -1329,18 +1329,18 @@
     if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
       return "4ba31e174d873b3fda1d7a160d4a0e85";
 #if BUILDFLAG(IS_APPLE)
-    return "c6fcbceb2f079bef10458ac60db3a10c";
+    return "17ac49518eabbb6a7632a547269c40a3";
 #else
-    return "62c2706511cb50e32e7caeb82b1d3d49";
+    return "e79446398d4508bc2cb47e6cf2a677ed";
 #endif
   }();
   const char* md5_modified_image = []() {
     if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
       return "5806fadc1a192bc4bb07511a0711c957";
 #if BUILDFLAG(IS_APPLE)
-    return "8068eb568e5c1c5fbe84e98f7a980ac3";
+    return "ce68959f74242d588af7fb82be5ba0ab";
 #else
-    return "83093ce9fac746db69fbd2fb394434ac";
+    return "425646a517a23104b9ef22881a19b3e2";
 #endif
   }();
 
@@ -1422,9 +1422,9 @@
 #if BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_ARM64)
     return "0c3448974a4e8da2395da917935e5de1";
 #elif BUILDFLAG(IS_APPLE) && !defined(ARCH_CPU_ARM64)
-    return "57a0fb3fba33e17de26bcde4c40b9a75";
+    return "5d449d36926c9f212c6cdb6c276d18cc";
 #else
-    return "1c4198c38f890c208c5cbaad57be4dc6";
+    return "a9532f555aca2fd099e2107fa40b61e6";
 #endif
   }();
   const char* md5_modified_text = []() {
@@ -1433,9 +1433,9 @@
 #if BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_ARM64)
     return "9cf1c024a9d2d356bcdd14cb71a32324";
 #elif BUILDFLAG(IS_APPLE) && !defined(ARCH_CPU_ARM64)
-    return "072574999f2e3f36774ee0b5bc94d4dd";
+    return "8c992808db99dbe3d74006358a671f05";
 #else
-    return "cfa78d01406865f41f486bd34a8b9f7b";
+    return "03cae68322d6a6ba120e738ab325408c";
 #endif
   }();
 
@@ -1569,9 +1569,9 @@
     if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
       return "2b9078043cd6130fef4e8542dcda943e";
 #if BUILDFLAG(IS_APPLE)
-    return "cd90315b250dfe08265ce0ac335c5f76";
+    return "52e93c54796f7f7167edf64e81d12bd7";
 #else
-    return "c4fb6911f2a87f490be196f8898de738";
+    return "5143f9a98beb7b00ff40b89110a1089f";
 #endif
   }();
 
diff --git a/testing/embedder_test_constants.cpp b/testing/embedder_test_constants.cpp
index ac2a667..9e8caee 100644
--- a/testing/embedder_test_constants.cpp
+++ b/testing/embedder_test_constants.cpp
@@ -13,9 +13,9 @@
   if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
     return "a31381406d0b95049e418720750b78dd";
 #if BUILDFLAG(IS_APPLE)
-  return "d243b5d64752be0f45b86df7bd2e2708";
+  return "0521eaa52fe2aa43aafd3e4495f63f0b";
 #else
-  return "cdde6c161679ab10b07c38c1ef04b7e8";
+  return "5f19ddad9d48f5b7b87ee7d92f577db6";
 #endif
 }
 
