diff --git a/core/fpdfapi/page/cpdf_colorstate.cpp b/core/fpdfapi/page/cpdf_colorstate.cpp
index 8d94627..dde0c29 100644
--- a/core/fpdfapi/page/cpdf_colorstate.cpp
+++ b/core/fpdfapi/page/cpdf_colorstate.cpp
@@ -33,7 +33,9 @@
 }
 
 void CPDF_ColorState::SetFillColorRef(FX_COLORREF colorref) {
-  m_Ref.GetPrivateCopy()->m_FillColorRef = colorref;
+  if (!m_Ref || GetFillColorRef() != colorref) {
+    m_Ref.GetPrivateCopy()->m_FillColorRef = colorref;
+  }
 }
 
 FX_COLORREF CPDF_ColorState::GetStrokeColorRef() const {
@@ -41,7 +43,9 @@
 }
 
 void CPDF_ColorState::SetStrokeColorRef(FX_COLORREF colorref) {
-  m_Ref.GetPrivateCopy()->m_StrokeColorRef = colorref;
+  if (!m_Ref || GetStrokeColorRef() != colorref) {
+    m_Ref.GetPrivateCopy()->m_StrokeColorRef = colorref;
+  }
 }
 
 const CPDF_Color* CPDF_ColorState::GetFillColor() const {
diff --git a/core/fpdfapi/page/cpdf_generalstate.cpp b/core/fpdfapi/page/cpdf_generalstate.cpp
index 4c1e692..c67d30c 100644
--- a/core/fpdfapi/page/cpdf_generalstate.cpp
+++ b/core/fpdfapi/page/cpdf_generalstate.cpp
@@ -123,7 +123,9 @@
 }
 
 void CPDF_GeneralState::SetBlendType(BlendMode type) {
-  m_Ref.GetPrivateCopy()->m_BlendType = type;
+  if (GetBlendType() != type) {
+    m_Ref.GetPrivateCopy()->m_BlendType = type;
+  }
 }
 
 float CPDF_GeneralState::GetFillAlpha() const {
@@ -132,7 +134,9 @@
 }
 
 void CPDF_GeneralState::SetFillAlpha(float alpha) {
-  m_Ref.GetPrivateCopy()->m_FillAlpha = alpha;
+  if (GetFillAlpha() != alpha) {
+    m_Ref.GetPrivateCopy()->m_FillAlpha = alpha;
+  }
 }
 
 float CPDF_GeneralState::GetStrokeAlpha() const {
@@ -141,7 +145,9 @@
 }
 
 void CPDF_GeneralState::SetStrokeAlpha(float alpha) {
-  m_Ref.GetPrivateCopy()->m_StrokeAlpha = alpha;
+  if (GetStrokeAlpha() != alpha) {
+    m_Ref.GetPrivateCopy()->m_StrokeAlpha = alpha;
+  }
 }
 
 RetainPtr<const CPDF_Dictionary> CPDF_GeneralState::GetSoftMask() const {
diff --git a/core/fpdfapi/page/cpdf_textstate.cpp b/core/fpdfapi/page/cpdf_textstate.cpp
index 6e48b87..a24eb04 100644
--- a/core/fpdfapi/page/cpdf_textstate.cpp
+++ b/core/fpdfapi/page/cpdf_textstate.cpp
@@ -34,7 +34,9 @@
 }
 
 void CPDF_TextState::SetFontSize(float size) {
-  m_Ref.GetPrivateCopy()->m_FontSize = size;
+  if (!m_Ref || GetFontSize() != size) {
+    m_Ref.GetPrivateCopy()->m_FontSize = size;
+  }
 }
 
 pdfium::span<const float> CPDF_TextState::GetMatrix() const {
@@ -50,7 +52,9 @@
 }
 
 void CPDF_TextState::SetCharSpace(float sp) {
-  m_Ref.GetPrivateCopy()->m_CharSpace = sp;
+  if (!m_Ref || GetCharSpace() != sp) {
+    m_Ref.GetPrivateCopy()->m_CharSpace = sp;
+  }
 }
 
 float CPDF_TextState::GetWordSpace() const {
@@ -58,7 +62,9 @@
 }
 
 void CPDF_TextState::SetWordSpace(float sp) {
-  m_Ref.GetPrivateCopy()->m_WordSpace = sp;
+  if (!m_Ref || GetWordSpace() != sp) {
+    m_Ref.GetPrivateCopy()->m_WordSpace = sp;
+  }
 }
 
 float CPDF_TextState::GetFontSizeH() const {
@@ -70,7 +76,9 @@
 }
 
 void CPDF_TextState::SetTextMode(TextRenderingMode mode) {
-  m_Ref.GetPrivateCopy()->m_TextMode = mode;
+  if (!m_Ref || GetTextMode() != mode) {
+    m_Ref.GetPrivateCopy()->m_TextMode = mode;
+  }
 }
 
 pdfium::span<const float> CPDF_TextState::GetCTM() const {
