diff --git a/core/fpdfapi/page/cpdf_allstates.cpp b/core/fpdfapi/page/cpdf_allstates.cpp
index f0c7359..fd5eaa3 100644
--- a/core/fpdfapi/page/cpdf_allstates.cpp
+++ b/core/fpdfapi/page/cpdf_allstates.cpp
@@ -7,6 +7,8 @@
 #include "core/fpdfapi/page/cpdf_allstates.h"
 
 #include <algorithm>
+#include <utility>
+#include <vector>
 
 #include "core/fpdfapi/page/cpdf_pageobjectholder.h"
 #include "core/fpdfapi/page/cpdf_streamcontentparser.h"
@@ -16,10 +18,9 @@
 #include "third_party/base/compiler_specific.h"
 #include "third_party/base/stl_util.h"
 
-CPDF_AllStates::CPDF_AllStates()
-    : m_TextLeading(0), m_TextRise(0), m_TextHorzScale(1.0f) {}
+CPDF_AllStates::CPDF_AllStates() = default;
 
-CPDF_AllStates::~CPDF_AllStates() {}
+CPDF_AllStates::~CPDF_AllStates() = default;
 
 void CPDF_AllStates::Copy(const CPDF_AllStates& src) {
   CopyStates(src);
@@ -33,8 +34,13 @@
   m_TextHorzScale = src.m_TextHorzScale;
 }
 
-void CPDF_AllStates::SetLineDash(CPDF_Array* pArray, float phase, float scale) {
-  m_GraphState.SetLineDash(pArray, phase, scale);
+void CPDF_AllStates::SetLineDash(const CPDF_Array* pArray,
+                                 float phase,
+                                 float scale) {
+  std::vector<float> dashes(pArray->size());
+  for (size_t i = 0; i < pArray->size(); ++i)
+    dashes[i] = pArray->GetNumberAt(i);
+  m_GraphState.SetLineDash(std::move(dashes), phase, scale);
 }
 
 void CPDF_AllStates::ProcessExtGS(CPDF_Dictionary* pGS,
diff --git a/core/fpdfapi/page/cpdf_allstates.h b/core/fpdfapi/page/cpdf_allstates.h
index e388b94..dc6f17f 100644
--- a/core/fpdfapi/page/cpdf_allstates.h
+++ b/core/fpdfapi/page/cpdf_allstates.h
@@ -22,16 +22,16 @@
 
   void Copy(const CPDF_AllStates& src);
   void ProcessExtGS(CPDF_Dictionary* pGS, CPDF_StreamContentParser* pParser);
-  void SetLineDash(CPDF_Array*, float, float scale);
+  void SetLineDash(const CPDF_Array* pArray, float phase, float scale);
 
   CFX_Matrix m_TextMatrix;
   CFX_Matrix m_CTM;
   CFX_Matrix m_ParentMatrix;
   CFX_PointF m_TextPos;
   CFX_PointF m_TextLinePos;
-  float m_TextLeading;
-  float m_TextRise;
-  float m_TextHorzScale;
+  float m_TextLeading = 0.0f;
+  float m_TextRise = 0.0f;
+  float m_TextHorzScale = 1.0f;
 };
 
 #endif  // CORE_FPDFAPI_PAGE_CPDF_ALLSTATES_H_
diff --git a/core/fxge/cfx_graphstate.cpp b/core/fxge/cfx_graphstate.cpp
index 929abe1..726c0c6 100644
--- a/core/fxge/cfx_graphstate.cpp
+++ b/core/fxge/cfx_graphstate.cpp
@@ -6,25 +6,27 @@
 
 #include "core/fxge/cfx_graphstate.h"
 
-#include "core/fpdfapi/parser/cpdf_array.h"
+#include <utility>
 
-CFX_GraphState::CFX_GraphState() {}
+CFX_GraphState::CFX_GraphState() = default;
 
 CFX_GraphState::CFX_GraphState(const CFX_GraphState& that)
     : m_Ref(that.m_Ref) {}
 
-CFX_GraphState::~CFX_GraphState() {}
+CFX_GraphState::~CFX_GraphState() = default;
 
 void CFX_GraphState::Emplace() {
   m_Ref.Emplace();
 }
 
-void CFX_GraphState::SetLineDash(CPDF_Array* pArray, float phase, float scale) {
+void CFX_GraphState::SetLineDash(std::vector<float> dashes,
+                                 float phase,
+                                 float scale) {
   CFX_GraphStateData* pData = m_Ref.GetPrivateCopy();
   pData->m_DashPhase = phase * scale;
-  pData->m_DashArray.resize(pArray->size());
-  for (size_t i = 0; i < pArray->size(); i++)
-    pData->m_DashArray[i] = pArray->GetNumberAt(i) * scale;
+  for (float& val : dashes)
+    val *= scale;
+  pData->m_DashArray = std::move(dashes);
 }
 
 float CFX_GraphState::GetLineWidth() const {
diff --git a/core/fxge/cfx_graphstate.h b/core/fxge/cfx_graphstate.h
index 05da326..20955f8 100644
--- a/core/fxge/cfx_graphstate.h
+++ b/core/fxge/cfx_graphstate.h
@@ -7,11 +7,11 @@
 #ifndef CORE_FXGE_CFX_GRAPHSTATE_H_
 #define CORE_FXGE_CFX_GRAPHSTATE_H_
 
+#include <vector>
+
 #include "core/fxcrt/shared_copy_on_write.h"
 #include "core/fxge/cfx_graphstatedata.h"
 
-class CPDF_Array;
-
 class CFX_GraphState {
  public:
   CFX_GraphState();
@@ -20,7 +20,7 @@
 
   void Emplace();
 
-  void SetLineDash(CPDF_Array* pArray, float phase, float scale);
+  void SetLineDash(std::vector<float> dashes, float phase, float scale);
 
   float GetLineWidth() const;
   void SetLineWidth(float width);
