diff --git a/poppler/GfxState.cc b/poppler/GfxState.cc
index 3161e20..e3417e0 100644
--- a/poppler/GfxState.cc
+++ b/poppler/GfxState.cc
@@ -1772,11 +1772,9 @@
 // GfxICCBasedColorSpace
 //------------------------------------------------------------------------
 
-GfxICCBasedColorSpace::GfxICCBasedColorSpace(int nCompsA, GfxColorSpace *altA,
-					     Ref *iccProfileStreamA) {
+GfxICCBasedColorSpace::GfxICCBasedColorSpace(int nCompsA, GfxColorSpace *altA) {
   nComps = nCompsA;
   alt = altA;
-  iccProfileStream = *iccProfileStreamA;
   rangeMin[0] = rangeMin[1] = rangeMin[2] = rangeMin[3] = 0;
   rangeMax[0] = rangeMax[1] = rangeMax[2] = rangeMax[3] = 1;
 #ifdef USE_CMS
@@ -1801,7 +1799,7 @@
   GfxICCBasedColorSpace *cs;
   int i;
 
-  cs = new GfxICCBasedColorSpace(nComps, alt->copy(), &iccProfileStream);
+  cs = new GfxICCBasedColorSpace(nComps, alt->copy());
   for (i = 0; i < 4; ++i) {
     cs->rangeMin[i] = rangeMin[i];
     cs->rangeMax[i] = rangeMax[i];
@@ -1902,7 +1900,7 @@
       delete altA;
       return nullptr;
   }
-  cs = new GfxICCBasedColorSpace(nCompsA, altA, &iccProfileStreamA);
+  cs = new GfxICCBasedColorSpace(nCompsA, altA);
   obj2 = dict->lookup("Range");
   if (obj2.isArray() && obj2.arrayGetLength() == 2 * nCompsA) {
     Object obj4;
diff --git a/poppler/GfxState.h b/poppler/GfxState.h
index 3256857..57bb26f 100644
--- a/poppler/GfxState.h
+++ b/poppler/GfxState.h
@@ -17,7 +17,7 @@
 // Copyright (C) 2006, 2007 Jeff Muizelaar <jeff@infidigm.net>
 // Copyright (C) 2006 Carlos Garcia Campos <carlosgc@gnome.org>
 // Copyright (C) 2009 Koji Otani <sho@bbr.jp>
-// Copyright (C) 2009-2011, 2013, 2016-2018 Albert Astals Cid <aacid@kde.org>
+// Copyright (C) 2009-2011, 2013, 2016-2019 Albert Astals Cid <aacid@kde.org>
 // Copyright (C) 2010 Christian Feuersänger <cfeuersaenger@googlemail.com>
 // Copyright (C) 2011 Andrea Canciani <ranma42@gmail.com>
 // Copyright (C) 2011-2014, 2016 Thomas Freitag <Thomas.Freitag@alfa.de>
@@ -534,8 +534,7 @@
 class GfxICCBasedColorSpace: public GfxColorSpace {
 public:
 
-  GfxICCBasedColorSpace(int nCompsA, GfxColorSpace *altA,
-			Ref *iccProfileStreamA);
+  GfxICCBasedColorSpace(int nCompsA, GfxColorSpace *altA);
   ~GfxICCBasedColorSpace();
   GfxColorSpace *copy() override;
   GfxColorSpaceMode getMode() override { return csICCBased; }
@@ -572,7 +571,6 @@
   GfxColorSpace *alt;		// alternate color space
   double rangeMin[4];		// min values for each component
   double rangeMax[4];		// max values for each component
-  Ref iccProfileStream;		// the ICC profile
 #ifdef USE_CMS
   int getIntent() { return (transform != nullptr) ? transform->getIntent() : 0; }
   GfxColorTransform *transform;
