diff --git a/BUILD.gn b/BUILD.gn
index 0553f8b..1223ef6 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -422,8 +422,6 @@
     "core/fpdfapi/fpdf_page/cpdf_generalstate.cpp",
     "core/fpdfapi/fpdf_page/cpdf_graphicstates.cpp",
     "core/fpdfapi/fpdf_page/cpdf_graphicstates.h",
-    "core/fpdfapi/fpdf_page/cpdf_graphstate.cpp",
-    "core/fpdfapi/fpdf_page/cpdf_graphstate.h",
     "core/fpdfapi/fpdf_page/cpdf_image.cpp",
     "core/fpdfapi/fpdf_page/cpdf_imageobject.cpp",
     "core/fpdfapi/fpdf_page/cpdf_meshstream.cpp",
@@ -766,6 +764,7 @@
     "core/fxge/ge/cfx_fontmapper.cpp",
     "core/fxge/ge/cfx_fontmgr.cpp",
     "core/fxge/ge/cfx_gemodule.cpp",
+    "core/fxge/ge/cfx_graphstate.cpp",
     "core/fxge/ge/cfx_graphstatedata.cpp",
     "core/fxge/ge/cfx_pathdata.cpp",
     "core/fxge/ge/cfx_renderdevice.cpp",
@@ -785,6 +784,7 @@
     "core/fxge/include/cfx_fontmgr.h",
     "core/fxge/include/cfx_fxgedevice.h",
     "core/fxge/include/cfx_gemodule.h",
+    "core/fxge/include/cfx_graphstate.h",
     "core/fxge/include/cfx_graphstatedata.h",
     "core/fxge/include/cfx_pathdata.h",
     "core/fxge/include/cfx_renderdevice.h",
diff --git a/core/fpdfapi/fpdf_page/cpdf_graphicstates.h b/core/fpdfapi/fpdf_page/cpdf_graphicstates.h
index a408bc7..fb404ff 100644
--- a/core/fpdfapi/fpdf_page/cpdf_graphicstates.h
+++ b/core/fpdfapi/fpdf_page/cpdf_graphicstates.h
@@ -8,10 +8,10 @@
 #define CORE_FPDFAPI_FPDF_PAGE_CPDF_GRAPHICSTATES_H_
 
 #include "core/fpdfapi/fpdf_page/cpdf_colorstate.h"
-#include "core/fpdfapi/fpdf_page/cpdf_graphstate.h"
 #include "core/fpdfapi/fpdf_page/cpdf_textstate.h"
 #include "core/fpdfapi/fpdf_page/include/cpdf_clippath.h"
 #include "core/fpdfapi/fpdf_page/include/cpdf_generalstate.h"
+#include "core/fxge/include/cfx_graphstate.h"
 
 class CPDF_GraphicStates {
  public:
@@ -22,7 +22,7 @@
   void DefaultStates();
 
   CPDF_ClipPath m_ClipPath;
-  CPDF_GraphState m_GraphState;
+  CFX_GraphState m_GraphState;
   CPDF_ColorState m_ColorState;
   CPDF_TextState m_TextState;
   CPDF_GeneralState m_GeneralState;
diff --git a/core/fpdfapi/fpdf_page/cpdf_graphstate.cpp b/core/fpdfapi/fpdf_page/cpdf_graphstate.cpp
deleted file mode 100644
index 5a8dbe8..0000000
--- a/core/fpdfapi/fpdf_page/cpdf_graphstate.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2016 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/fpdfapi/fpdf_page/cpdf_graphstate.h"
-
-#include "core/fpdfapi/fpdf_parser/include/cpdf_array.h"
-
-CPDF_GraphState::CPDF_GraphState() {}
-
-CPDF_GraphState::CPDF_GraphState(const CPDF_GraphState& that)
-    : m_Ref(that.m_Ref) {}
-
-CPDF_GraphState::~CPDF_GraphState() {}
-
-void CPDF_GraphState::Emplace() {
-  m_Ref.Emplace();
-}
-
-void CPDF_GraphState::SetLineDash(CPDF_Array* pArray,
-                                  FX_FLOAT phase,
-                                  FX_FLOAT scale) {
-  CFX_GraphStateData* pData = m_Ref.GetPrivateCopy();
-  pData->m_DashPhase = phase * scale;
-  pData->SetDashCount(static_cast<int>(pArray->GetCount()));
-  for (size_t i = 0; i < pArray->GetCount(); i++)
-    pData->m_DashArray[i] = pArray->GetNumberAt(i) * scale;
-}
-
-FX_FLOAT CPDF_GraphState::GetLineWidth() const {
-  return m_Ref.GetObject()->m_LineWidth;
-}
-
-void CPDF_GraphState::SetLineWidth(FX_FLOAT width) {
-  m_Ref.GetPrivateCopy()->m_LineWidth = width;
-}
-
-CFX_GraphStateData::LineCap CPDF_GraphState::GetLineCap() const {
-  return m_Ref.GetObject()->m_LineCap;
-}
-void CPDF_GraphState::SetLineCap(CFX_GraphStateData::LineCap cap) {
-  m_Ref.GetPrivateCopy()->m_LineCap = cap;
-}
-
-CFX_GraphStateData::LineJoin CPDF_GraphState::GetLineJoin() const {
-  return m_Ref.GetObject()->m_LineJoin;
-}
-
-void CPDF_GraphState::SetLineJoin(CFX_GraphStateData::LineJoin join) {
-  m_Ref.GetPrivateCopy()->m_LineJoin = join;
-}
-
-FX_FLOAT CPDF_GraphState::GetMiterLimit() const {
-  return m_Ref.GetObject()->m_MiterLimit;
-}
-
-void CPDF_GraphState::SetMiterLimit(FX_FLOAT limit) {
-  m_Ref.GetPrivateCopy()->m_MiterLimit = limit;
-}
diff --git a/core/fpdfapi/fpdf_render/fpdf_render.cpp b/core/fpdfapi/fpdf_render/fpdf_render.cpp
index d7c6e2f..89667f3 100644
--- a/core/fpdfapi/fpdf_render/fpdf_render.cpp
+++ b/core/fpdfapi/fpdf_render/fpdf_render.cpp
@@ -493,7 +493,7 @@
   if (m_pType3Char)
     FillType |= FX_FILL_TEXT_MODE;
 
-  CPDF_GraphState graphState = pPathObj->m_GraphState;
+  CFX_GraphState graphState = pPathObj->m_GraphState;
   if (m_Options.m_Flags & RENDER_THINLINE)
     graphState.SetLineWidth(0);
   return m_pDevice->DrawPathWithBlend(
diff --git a/core/fxge/ge/cfx_graphstate.cpp b/core/fxge/ge/cfx_graphstate.cpp
new file mode 100644
index 0000000..9a6e738
--- /dev/null
+++ b/core/fxge/ge/cfx_graphstate.cpp
@@ -0,0 +1,61 @@
+// Copyright 2016 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/include/cfx_graphstate.h"
+
+#include "core/fpdfapi/fpdf_parser/include/cpdf_array.h"
+
+CFX_GraphState::CFX_GraphState() {}
+
+CFX_GraphState::CFX_GraphState(const CFX_GraphState& that)
+    : m_Ref(that.m_Ref) {}
+
+CFX_GraphState::~CFX_GraphState() {}
+
+void CFX_GraphState::Emplace() {
+  m_Ref.Emplace();
+}
+
+void CFX_GraphState::SetLineDash(CPDF_Array* pArray,
+                                 FX_FLOAT phase,
+                                 FX_FLOAT scale) {
+  CFX_GraphStateData* pData = m_Ref.GetPrivateCopy();
+  pData->m_DashPhase = phase * scale;
+  pData->SetDashCount(static_cast<int>(pArray->GetCount()));
+  for (size_t i = 0; i < pArray->GetCount(); i++)
+    pData->m_DashArray[i] = pArray->GetNumberAt(i) * scale;
+}
+
+FX_FLOAT CFX_GraphState::GetLineWidth() const {
+  return m_Ref.GetObject()->m_LineWidth;
+}
+
+void CFX_GraphState::SetLineWidth(FX_FLOAT width) {
+  m_Ref.GetPrivateCopy()->m_LineWidth = width;
+}
+
+CFX_GraphStateData::LineCap CFX_GraphState::GetLineCap() const {
+  return m_Ref.GetObject()->m_LineCap;
+}
+void CFX_GraphState::SetLineCap(CFX_GraphStateData::LineCap cap) {
+  m_Ref.GetPrivateCopy()->m_LineCap = cap;
+}
+
+CFX_GraphStateData::LineJoin CFX_GraphState::GetLineJoin() const {
+  return m_Ref.GetObject()->m_LineJoin;
+}
+
+void CFX_GraphState::SetLineJoin(CFX_GraphStateData::LineJoin join) {
+  m_Ref.GetPrivateCopy()->m_LineJoin = join;
+}
+
+FX_FLOAT CFX_GraphState::GetMiterLimit() const {
+  return m_Ref.GetObject()->m_MiterLimit;
+}
+
+void CFX_GraphState::SetMiterLimit(FX_FLOAT limit) {
+  m_Ref.GetPrivateCopy()->m_MiterLimit = limit;
+}
diff --git a/core/fpdfapi/fpdf_page/cpdf_graphstate.h b/core/fxge/include/cfx_graphstate.h
similarity index 78%
rename from core/fpdfapi/fpdf_page/cpdf_graphstate.h
rename to core/fxge/include/cfx_graphstate.h
index c3e3880..9470303 100644
--- a/core/fpdfapi/fpdf_page/cpdf_graphstate.h
+++ b/core/fxge/include/cfx_graphstate.h
@@ -4,19 +4,19 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef CORE_FPDFAPI_FPDF_PAGE_CPDF_GRAPHSTATE_H_
-#define CORE_FPDFAPI_FPDF_PAGE_CPDF_GRAPHSTATE_H_
+#ifndef CORE_FXGE_INCLUDE_CFX_GRAPHSTATE_H_
+#define CORE_FXGE_INCLUDE_CFX_GRAPHSTATE_H_
 
 #include "core/fxcrt/include/cfx_count_ref.h"
 #include "core/fxge/include/cfx_graphstatedata.h"
 
 class CPDF_Array;
 
-class CPDF_GraphState {
+class CFX_GraphState {
  public:
-  CPDF_GraphState();
-  CPDF_GraphState(const CPDF_GraphState& that);
-  ~CPDF_GraphState();
+  CFX_GraphState();
+  CFX_GraphState(const CFX_GraphState& that);
+  ~CFX_GraphState();
 
   void Emplace();
 
@@ -41,4 +41,4 @@
   CFX_CountRef<CFX_GraphStateData> m_Ref;
 };
 
-#endif  // CORE_FPDFAPI_FPDF_PAGE_CPDF_GRAPHSTATE_H_
+#endif  // CORE_FXGE_INCLUDE_CFX_GRAPHSTATE_H_
