diff --git a/core/fxge/cfx_renderdevice.cpp b/core/fxge/cfx_renderdevice.cpp
index ae9c723..7130649 100644
--- a/core/fxge/cfx_renderdevice.cpp
+++ b/core/fxge/cfx_renderdevice.cpp
@@ -693,33 +693,12 @@
   }
   if (fill && stroke_alpha == 0 && !fill_options.stroke &&
       !fill_options.text_mode) {
-    CFX_PathData newPath;
-    bool bThin = false;
-    bool setIdentity = false;
-    // TODO(crbug.com/pdfium/1638): GetZeroAreaPath() should only process a sub
+    // TODO(crbug.com/pdfium/1638): Make DrawZeroAreaPath() only process a sub
     // path instead the whole path.
-    if (GetZeroAreaPath(pPathData->GetPoints(), pObject2Device,
-                        !!m_pDeviceDriver->GetDriverType(), &newPath, &bThin,
-                        &setIdentity)) {
-      CFX_GraphStateData graphState;
-      graphState.m_LineWidth = 0.0f;
-
-      uint32_t strokecolor = fill_color;
-      if (bThin)
-        strokecolor = (((fill_alpha >> 2) << 24) | (strokecolor & 0x00ffffff));
-
-      const CFX_Matrix* pMatrix = nullptr;
-      if (pObject2Device && !pObject2Device->IsIdentity() && !setIdentity)
-        pMatrix = pObject2Device;
-
-      CFX_FillRenderOptions path_options;
-      path_options.zero_area = true;
-      if (fill_options.aliased_path)
-        path_options.aliased_path = true;
-
-      m_pDeviceDriver->DrawPath(&newPath, pMatrix, &graphState, 0, strokecolor,
-                                path_options, blend_type);
-    }
+    DrawZeroAreaPath(pPathData->GetPoints(), pObject2Device,
+                     !!m_pDeviceDriver->GetDriverType(),
+                     fill_options.aliased_path, fill_color, fill_alpha,
+                     blend_type);
   }
 
   if (fill && fill_alpha && stroke_alpha < 0xff && fill_options.stroke) {
@@ -838,6 +817,43 @@
                                    fill_options, blend_type);
 }
 
+void CFX_RenderDevice::DrawZeroAreaPath(const std::vector<FX_PATHPOINT>& path,
+                                        const CFX_Matrix* matrix,
+                                        bool adjust,
+                                        bool aliased_path,
+                                        uint32_t fill_color,
+                                        uint8_t fill_alpha,
+                                        BlendMode blend_type) {
+  if (path.empty())
+    return;
+
+  CFX_PathData new_path;
+  bool thin = false;
+  bool set_identity = false;
+
+  if (!GetZeroAreaPath(path, matrix, adjust, &new_path, &thin, &set_identity))
+    return;
+
+  CFX_GraphStateData graph_state;
+  graph_state.m_LineWidth = 0.0f;
+
+  uint32_t stroke_color = fill_color;
+  if (thin)
+    stroke_color = (((fill_alpha >> 2) << 24) | (stroke_color & 0x00ffffff));
+
+  const CFX_Matrix* new_matrix = nullptr;
+  if (matrix && !matrix->IsIdentity() && !set_identity)
+    new_matrix = matrix;
+
+  CFX_FillRenderOptions path_options;
+  path_options.zero_area = true;
+  if (aliased_path)
+    path_options.aliased_path = true;
+
+  m_pDeviceDriver->DrawPath(&new_path, new_matrix, &graph_state, 0,
+                            stroke_color, path_options, blend_type);
+}
+
 bool CFX_RenderDevice::GetDIBits(const RetainPtr<CFX_DIBitmap>& pBitmap,
                                  int left,
                                  int top) {
diff --git a/core/fxge/cfx_renderdevice.h b/core/fxge/cfx_renderdevice.h
index a880917..d24b0d2 100644
--- a/core/fxge/cfx_renderdevice.h
+++ b/core/fxge/cfx_renderdevice.h
@@ -23,6 +23,7 @@
 class CFX_GraphStateData;
 class CFX_ImageRenderer;
 class CFX_PathData;
+class FX_PATHPOINT;
 class PauseIndicatorIface;
 class TextCharPos;
 struct CFX_Color;
@@ -242,6 +243,13 @@
                         uint32_t color,
                         const CFX_FillRenderOptions& fill_options,
                         BlendMode blend_type);
+  void DrawZeroAreaPath(const std::vector<FX_PATHPOINT>& path,
+                        const CFX_Matrix* matrix,
+                        bool adjust,
+                        bool aliased_path,
+                        uint32_t fill_color,
+                        uint8_t fill_alpha,
+                        BlendMode blend_type);
   bool FillRectWithBlend(const FX_RECT& rect,
                          uint32_t color,
                          BlendMode blend_type);
