diff --git a/core/fxge/BUILD.gn b/core/fxge/BUILD.gn
index f8b7d4e..98ec1b5 100644
--- a/core/fxge/BUILD.gn
+++ b/core/fxge/BUILD.gn
@@ -23,6 +23,8 @@
     "cfx_color.cpp",
     "cfx_color.h",
     "cfx_defaultrenderdevice.h",
+    "cfx_drawutils.cpp",
+    "cfx_drawutils.h",
     "cfx_face.cpp",
     "cfx_face.h",
     "cfx_folderfontinfo.cpp",
diff --git a/core/fxge/cfx_drawutils.cpp b/core/fxge/cfx_drawutils.cpp
new file mode 100644
index 0000000..b144153
--- /dev/null
+++ b/core/fxge/cfx_drawutils.cpp
@@ -0,0 +1,38 @@
+// Copyright 2020 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fxge/cfx_drawutils.h"
+
+#include "core/fxge/cfx_graphstatedata.h"
+#include "core/fxge/cfx_pathdata.h"
+#include "core/fxge/cfx_renderdevice.h"
+
+// static
+void CFX_DrawUtils::DrawFocusRect(CFX_RenderDevice* render_device,
+                                  const CFX_Matrix& user_to_device,
+                                  const CFX_FloatRect& view_bounding_box) {
+  ASSERT(render_device);
+  CFX_PathData path;
+  path.AppendPoint(CFX_PointF(view_bounding_box.left, view_bounding_box.top),
+                   FXPT_TYPE::MoveTo, /*closeFigure=*/false);
+  path.AppendPoint(CFX_PointF(view_bounding_box.left, view_bounding_box.bottom),
+                   FXPT_TYPE::LineTo, /*closeFigure=*/false);
+  path.AppendPoint(
+      CFX_PointF(view_bounding_box.right, view_bounding_box.bottom),
+      FXPT_TYPE::LineTo, /*closeFigure=*/false);
+  path.AppendPoint(CFX_PointF(view_bounding_box.right, view_bounding_box.top),
+                   FXPT_TYPE::LineTo, /*closeFigure=*/false);
+  path.AppendPoint(CFX_PointF(view_bounding_box.left, view_bounding_box.top),
+                   FXPT_TYPE::LineTo, /*closeFigure=*/false);
+
+  CFX_GraphStateData graph_state_data;
+  graph_state_data.m_DashArray = {1.0f};
+  graph_state_data.m_DashPhase = 0;
+  graph_state_data.m_LineWidth = 1.0f;
+
+  render_device->DrawPath(&path, &user_to_device, &graph_state_data, 0,
+                          ArgbEncode(255, 0, 0, 0), FXFILL_ALTERNATE);
+}
diff --git a/core/fxge/cfx_drawutils.h b/core/fxge/cfx_drawutils.h
new file mode 100644
index 0000000..4c8b2fe
--- /dev/null
+++ b/core/fxge/cfx_drawutils.h
@@ -0,0 +1,24 @@
+// Copyright 2020 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FXGE_CFX_DRAWUTILS_H_
+#define CORE_FXGE_CFX_DRAWUTILS_H_
+
+class CFX_FloatRect;
+class CFX_Matrix;
+class CFX_RenderDevice;
+
+class CFX_DrawUtils {
+ public:
+  CFX_DrawUtils() = delete;
+  CFX_DrawUtils(const CFX_DrawUtils&) = delete;
+  CFX_DrawUtils& operator=(const CFX_DrawUtils&) = delete;
+
+  static void DrawFocusRect(CFX_RenderDevice* render_device,
+                            const CFX_Matrix& user_to_device,
+                            const CFX_FloatRect& view_bounding_box);
+};
+#endif  // CORE_FXGE_CFX_DRAWUTILS_H_
diff --git a/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp b/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
index 1e6d4a8..b6dc475 100644
--- a/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
+++ b/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
@@ -10,9 +10,7 @@
 #include "constants/form_flags.h"
 #include "core/fpdfapi/page/cpdf_page.h"
 #include "core/fxcrt/autorestorer.h"
-#include "core/fxge/cfx_graphstatedata.h"
-#include "core/fxge/cfx_pathdata.h"
-#include "core/fxge/cfx_renderdevice.h"
+#include "core/fxge/cfx_drawutils.h"
 #include "fpdfsdk/cpdfsdk_formfillenvironment.h"
 #include "fpdfsdk/cpdfsdk_interactiveform.h"
 #include "fpdfsdk/cpdfsdk_pageview.h"
@@ -75,24 +73,8 @@
     if (rcFocus.IsEmpty())
       return;
 
-    CFX_PathData path;
-    path.AppendPoint(CFX_PointF(rcFocus.left, rcFocus.top), FXPT_TYPE::MoveTo,
-                     false);
-    path.AppendPoint(CFX_PointF(rcFocus.left, rcFocus.bottom),
-                     FXPT_TYPE::LineTo, false);
-    path.AppendPoint(CFX_PointF(rcFocus.right, rcFocus.bottom),
-                     FXPT_TYPE::LineTo, false);
-    path.AppendPoint(CFX_PointF(rcFocus.right, rcFocus.top), FXPT_TYPE::LineTo,
-                     false);
-    path.AppendPoint(CFX_PointF(rcFocus.left, rcFocus.top), FXPT_TYPE::LineTo,
-                     false);
+    CFX_DrawUtils::DrawFocusRect(pDevice, mtUser2Device, rcFocus);
 
-    CFX_GraphStateData gsd;
-    gsd.m_DashArray = {1.0f};
-    gsd.m_DashPhase = 0;
-    gsd.m_LineWidth = 1.0f;
-    pDevice->DrawPath(&path, &mtUser2Device, &gsd, 0, ArgbEncode(255, 0, 0, 0),
-                      FXFILL_ALTERNATE);
     return;
   }
 
