diff --git a/core/fpdfapi/fpdf_page/cpdf_textobject.cpp b/core/fpdfapi/fpdf_page/cpdf_textobject.cpp
index bd17dea..af6ae06 100644
--- a/core/fpdfapi/fpdf_page/cpdf_textobject.cpp
+++ b/core/fpdfapi/fpdf_page/cpdf_textobject.cpp
@@ -133,11 +133,11 @@
 }
 
 void CPDF_TextObject::Transform(const CFX_Matrix& matrix) {
-  m_TextState.GetPrivateCopy();
   CFX_Matrix text_matrix;
   GetTextMatrix(&text_matrix);
   text_matrix.Concat(matrix);
-  FX_FLOAT* pTextMatrix = m_TextState.GetMatrix();
+
+  FX_FLOAT* pTextMatrix = m_TextState.GetMutableMatrix();
   pTextMatrix[0] = text_matrix.GetA();
   pTextMatrix[1] = text_matrix.GetC();
   pTextMatrix[2] = text_matrix.GetB();
diff --git a/core/fpdfapi/fpdf_page/cpdf_textstate.h b/core/fpdfapi/fpdf_page/cpdf_textstate.h
index 59c988d..235bdf1 100644
--- a/core/fpdfapi/fpdf_page/cpdf_textstate.h
+++ b/core/fpdfapi/fpdf_page/cpdf_textstate.h
@@ -18,8 +18,8 @@
   void SetFont(CPDF_Font* pFont);
 
   FX_FLOAT GetFontSize() const { return GetObject()->m_FontSize; }
-  FX_FLOAT* GetMatrix() { return GetObject()->m_Matrix; }
   const FX_FLOAT* GetMatrix() const { return GetObject()->m_Matrix; }
+  FX_FLOAT* GetMutableMatrix() { return GetPrivateCopy()->m_Matrix; }
 
   FX_FLOAT GetFontSizeV() const;
   FX_FLOAT GetFontSizeH() const;
diff --git a/core/fpdfapi/fpdf_page/include/cpdf_path.h b/core/fpdfapi/fpdf_page/include/cpdf_path.h
index 98de696..e0ffa8c 100644
--- a/core/fpdfapi/fpdf_page/include/cpdf_path.h
+++ b/core/fpdfapi/fpdf_page/include/cpdf_path.h
@@ -30,14 +30,14 @@
     GetPrivateCopy()->Transform(pMatrix);
   }
   void Append(const CPDF_Path& other, const CFX_Matrix* pMatrix) {
-    GetObject()->Append(other.GetObject(), pMatrix);
+    GetPrivateCopy()->Append(other.GetObject(), pMatrix);
   }
 
   void AppendRect(FX_FLOAT left,
                   FX_FLOAT bottom,
                   FX_FLOAT right,
                   FX_FLOAT top) {
-    GetObject()->AppendRect(left, bottom, right, top);
+    GetPrivateCopy()->AppendRect(left, bottom, right, top);
   }
 };
 
diff --git a/core/fxcrt/include/cfx_count_ref.h b/core/fxcrt/include/cfx_count_ref.h
index 817ce95..954b72b 100644
--- a/core/fxcrt/include/cfx_count_ref.h
+++ b/core/fxcrt/include/cfx_count_ref.h
@@ -30,7 +30,6 @@
   }
 
   void SetNull() { m_pObject.Reset(); }
-  ObjClass* GetObject() { return m_pObject.Get(); }
   const ObjClass* GetObject() const { return m_pObject.Get(); }
 
   template <typename... Args>
