diff --git a/testing/tools/pngdiffer.py b/testing/tools/pngdiffer.py
index ceb4022..d9f0d9a 100755
--- a/testing/tools/pngdiffer.py
+++ b/testing/tools/pngdiffer.py
@@ -19,7 +19,10 @@
 # most specific, and the root being the least specific.
 _COMMON_SUFFIX_ORDER = ('_{os}', '')
 _AGG_SUFFIX_ORDER = ('_agg_{os}', '_agg') + _COMMON_SUFFIX_ORDER
-_GDI_SUFFIX_ORDER = ('_gdi_{os}', '_gdi') + _COMMON_SUFFIX_ORDER
+_GDI_AGG_SUFFIX_ORDER = ('_gdi_agg_{os}', '_gdi_agg', '_gdi_{os}',
+                         '_gdi') + _COMMON_SUFFIX_ORDER
+_GDI_SKIA_SUFFIX_ORDER = ('_gdi_skia_{os}', '_gdi_skia', '_gdi_{os}',
+                          '_gdi') + _COMMON_SUFFIX_ORDER
 _SKIA_SUFFIX_ORDER = ('_skia_{os}', '_skia') + _COMMON_SUFFIX_ORDER
 
 
@@ -40,18 +43,24 @@
 
 class PNGDiffer():
 
-  def __init__(self, finder, reverse_byte_order, rendering_option):
+  def __init__(self, finder, reverse_byte_order, rendering_option,
+               default_renderer):
     self.pdfium_diff_path = finder.ExecutablePath('pdfium_diff')
     self.os_name = finder.os_name
     self.reverse_byte_order = reverse_byte_order
 
-    if rendering_option == 'agg':
+    self.suffix_order = None
+    if rendering_option == 'gdi':
+      if default_renderer == 'agg':
+        self.suffix_order = _GDI_AGG_SUFFIX_ORDER
+      elif default_renderer == 'skia':
+        self.suffix_order = _GDI_SKIA_SUFFIX_ORDER
+    elif rendering_option == 'agg':
       self.suffix_order = _AGG_SUFFIX_ORDER
-    elif rendering_option == 'gdi':
-      self.suffix_order = _GDI_SUFFIX_ORDER
     elif rendering_option == 'skia':
       self.suffix_order = _SKIA_SUFFIX_ORDER
-    else:
+
+    if not self.suffix_order:
       raise ValueError(f'rendering_option={rendering_option}')
 
   def CheckMissingTools(self, regenerate_expected):
diff --git a/testing/tools/test_runner.py b/testing/tools/test_runner.py
index c7f8aa7..c52849a 100644
--- a/testing/tools/test_runner.py
+++ b/testing/tools/test_runner.py
@@ -28,7 +28,7 @@
 # Arbitrary timestamp, expressed in seconds since the epoch, used to make sure
 # that tests that depend on the current time are stable. Happens to be the
 # timestamp of the first commit to repo, 2014/5/9 17:48:50.
-TEST_SEED_TIME = "1399672130"
+TEST_SEED_TIME = '1399672130'
 
 # List of test types that should run text tests instead of pixel tests.
 TEXT_TESTS = ['javascript']
@@ -55,7 +55,7 @@
 
   def IsSkiaGoldEnabled(self):
     return (self.options.run_skia_gold and
-            not self.per_process_config.test_type in TEXT_TESTS)
+            self.per_process_config.test_type not in TEXT_TESTS)
 
   def IsExecutionSuppressed(self, input_path):
     return self.per_process_state.test_suppressor.IsExecutionSuppressed(
@@ -435,6 +435,7 @@
   enforce_expected_images: bool = False
   options: dict = None
   features: set = None
+  default_renderer: str = None
   rendering_option: str = None
 
   def NewFinder(self):
@@ -449,19 +450,20 @@
     self.features = set(output.decode('utf-8').strip().split(','))
 
     if 'SKIA' in self.features:
-      self.rendering_option = 'skia'
+      self.default_renderer = 'skia'
     else:
-      self.rendering_option = 'agg'
+      self.default_renderer = 'agg'
+    self.rendering_option = self.default_renderer
 
     if self.options.use_renderer == 'agg':
       self.rendering_option = 'agg'
     elif self.options.use_renderer == 'gdi':
       if 'GDI' not in self.features:
-        return 'pdfium_test does not support the GDI renderer'
+        return 'pdfium_test missing GDI renderer support'
       self.rendering_option = 'gdi'
     elif self.options.use_renderer == 'skia':
       if 'SKIA' not in self.features:
-        return 'pdfium_test does not support the Skia renderer'
+        return 'pdfium_test missing Skia renderer support'
       self.rendering_option = 'skia'
 
     return None
@@ -493,7 +495,8 @@
         self.options.disable_xfa, config.rendering_option)
     self.image_differ = pngdiffer.PNGDiffer(finder,
                                             self.options.reverse_byte_order,
-                                            config.rendering_option)
+                                            config.rendering_option,
+                                            config.default_renderer)
 
     self.process_name = multiprocessing.current_process().name
     self.skia_tester = None
@@ -690,7 +693,7 @@
     ])
 
   def _VerifyEmptyText(self, txt_path):
-    with open(txt_path, "rb") as txt_file:
+    with open(txt_path, 'rb') as txt_file:
       txt_data = txt_file.read()
 
     if txt_data:
