diff --git a/core/fpdfapi/page/cpdf_contentparser.cpp b/core/fpdfapi/page/cpdf_contentparser.cpp
index 0caafef..5b3efe1 100644
--- a/core/fpdfapi/page/cpdf_contentparser.cpp
+++ b/core/fpdfapi/page/cpdf_contentparser.cpp
@@ -69,8 +69,7 @@
   if (pBBox) {
     form_bbox = pBBox->GetRect();
     ClipPath.Emplace();
-    ClipPath.AppendRect(form_bbox.left, form_bbox.bottom, form_bbox.right,
-                        form_bbox.top);
+    ClipPath.AppendFloatRect(form_bbox);
     ClipPath.Transform(form_matrix);
     if (pParentMatrix)
       ClipPath.Transform(*pParentMatrix);
diff --git a/core/fpdfapi/page/cpdf_path.cpp b/core/fpdfapi/page/cpdf_path.cpp
index d96b3e3..a07bb6a 100644
--- a/core/fpdfapi/page/cpdf_path.cpp
+++ b/core/fpdfapi/page/cpdf_path.cpp
@@ -45,6 +45,10 @@
   m_Ref.GetPrivateCopy()->Append(pData, pMatrix);
 }
 
+void CPDF_Path::AppendFloatRect(const CFX_FloatRect& rect) {
+  m_Ref.GetPrivateCopy()->AppendFloatRect(rect);
+}
+
 void CPDF_Path::AppendRect(float left, float bottom, float right, float top) {
   m_Ref.GetPrivateCopy()->AppendRect(left, bottom, right, top);
 }
diff --git a/core/fpdfapi/page/cpdf_path.h b/core/fpdfapi/page/cpdf_path.h
index 62ff675..48f5634 100644
--- a/core/fpdfapi/page/cpdf_path.h
+++ b/core/fpdfapi/page/cpdf_path.h
@@ -33,7 +33,7 @@
   void Transform(const CFX_Matrix& matrix);
 
   void Append(const CFX_PathData* pData, const CFX_Matrix* pMatrix);
-  // TODO(thestig): Switch to CFX_FloatRect.
+  void AppendFloatRect(const CFX_FloatRect& rect);
   void AppendRect(float left, float bottom, float right, float top);
   void AppendPoint(const CFX_PointF& point, FXPT_TYPE type, bool close);
 
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index d412b52..89b815b 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -1955,8 +1955,7 @@
     path.m_ClipPath.AppendTexts(&pCopy);
     path.m_ColorState = textobj->m_ColorState;
     path.m_GeneralState = textobj->m_GeneralState;
-    path.path().AppendRect(textobj->GetRect().left, textobj->GetRect().bottom,
-                           textobj->GetRect().right, textobj->GetRect().top);
+    path.path().AppendFloatRect(textobj->GetRect());
     path.SetRect(textobj->GetRect());
 
     AutoRestorer<UnownedPtr<const CPDF_PageObject>> restorer2(&m_pCurObj);
diff --git a/core/fpdfdoc/cpdf_annot.cpp b/core/fpdfdoc/cpdf_annot.cpp
index 6d542ee..9142a90 100644
--- a/core/fpdfdoc/cpdf_annot.cpp
+++ b/core/fpdfdoc/cpdf_annot.cpp
@@ -510,7 +510,7 @@
   CFX_FloatRect rect = GetRect();
   rect.Deflate(width / 2, width / 2);
   CFX_PathData path;
-  path.AppendRect(rect);
+  path.AppendFloatRect(rect);
 
   int fill_type = 0;
   if (pOptions && pOptions->GetOptions().bNoPathSmooth)
diff --git a/core/fxge/cfx_pathdata.cpp b/core/fxge/cfx_pathdata.cpp
index 078a180..55ce854 100644
--- a/core/fxge/cfx_pathdata.cpp
+++ b/core/fxge/cfx_pathdata.cpp
@@ -231,7 +231,7 @@
   AppendPoint(pt2, FXPT_TYPE::LineTo, false);
 }
 
-void CFX_PathData::AppendRect(const CFX_FloatRect& rect) {
+void CFX_PathData::AppendFloatRect(const CFX_FloatRect& rect) {
   return AppendRect(rect.left, rect.bottom, rect.right, rect.top);
 }
 
diff --git a/core/fxge/cfx_pathdata.h b/core/fxge/cfx_pathdata.h
index 8a18d82..3fd57e2 100644
--- a/core/fxge/cfx_pathdata.h
+++ b/core/fxge/cfx_pathdata.h
@@ -62,7 +62,7 @@
   bool IsRect(const CFX_Matrix* pMatrix, CFX_FloatRect* rect) const;
 
   void Append(const CFX_PathData* pSrc, const CFX_Matrix* pMatrix);
-  void AppendRect(const CFX_FloatRect& rect);
+  void AppendFloatRect(const CFX_FloatRect& rect);
   void AppendRect(float left, float bottom, float right, float top);
   void AppendLine(const CFX_PointF& pt1, const CFX_PointF& pt2);
   void AppendPoint(const CFX_PointF& point, FXPT_TYPE type, bool closeFigure);
diff --git a/core/fxge/cfx_renderdevice.cpp b/core/fxge/cfx_renderdevice.cpp
index c2c0ec0..fdfdd6a 100644
--- a/core/fxge/cfx_renderdevice.cpp
+++ b/core/fxge/cfx_renderdevice.cpp
@@ -1087,7 +1087,7 @@
                                     const CFX_FloatRect& rect,
                                     const FX_COLORREF& color) {
   CFX_PathData path;
-  path.AppendRect(rect);
+  path.AppendFloatRect(rect);
   DrawPath(&path, pUser2Device, nullptr, color, 0, FXFILL_WINDING);
 }
 
@@ -1111,7 +1111,7 @@
   gsd.m_LineWidth = fWidth;
 
   CFX_PathData path;
-  path.AppendRect(rect);
+  path.AppendFloatRect(rect);
   DrawPath(&path, &mtUser2Device, &gsd, 0, color, FXFILL_ALTERNATE);
 }
 
diff --git a/fpdfsdk/cpdfsdk_widget.cpp b/fpdfsdk/cpdfsdk_widget.cpp
index 24289fc..6feb146 100644
--- a/fpdfsdk/cpdfsdk_widget.cpp
+++ b/fpdfsdk/cpdfsdk_widget.cpp
@@ -662,7 +662,7 @@
     gsd.m_LineWidth = 0.0f;
 
     CFX_PathData pathData;
-    pathData.AppendRect(GetRect());
+    pathData.AppendFloatRect(GetRect());
     pDevice->DrawPath(&pathData, &mtUser2Device, &gsd, 0, 0xFFAAAAAA,
                       FXFILL_ALTERNATE);
   } else {
