diff --git a/include/core/SkICC.h b/include/core/SkICC.h
index ddc31a5..e379759 100644
--- a/include/core/SkICC.h
+++ b/include/core/SkICC.h
@@ -9,18 +9,11 @@
 #define SkICC_DEFINED
 
 #include "SkData.h"
-#include "SkMatrix44.h"
-#include "SkRefCnt.h"
 
 struct skcms_Matrix3x3;
 struct skcms_TransferFunction;
-struct SkColorSpaceTransferFn;
 
 SK_API sk_sp<SkData> SkWriteICCProfile(const skcms_TransferFunction&,
                                        const skcms_Matrix3x3& toXYZD50);
 
-namespace SkICC {
-    SK_API sk_sp<SkData> WriteToICC(const SkColorSpaceTransferFn&, const SkMatrix44&);
-}
-
 #endif//SkICC_DEFINED
diff --git a/src/core/SkICC.cpp b/src/core/SkICC.cpp
index dd441d5..31d96bd 100644
--- a/src/core/SkICC.cpp
+++ b/src/core/SkICC.cpp
@@ -348,24 +348,3 @@
     SkASSERT(kICCProfileSize == ptr - (uint8_t*) profile.get());
     return SkData::MakeFromMalloc(profile.release(), kICCProfileSize);
 }
-
-namespace SkICC {
-
-    sk_sp<SkData> WriteToICC(const SkColorSpaceTransferFn& fn, const SkMatrix44& toXYZD50) {
-        if (toXYZD50.get(3,0) == 0 && toXYZD50.get(3,1) == 0 && toXYZD50.get(3,2) == 0 &&
-            toXYZD50.get(3,3) == 1 &&
-            toXYZD50.get(0,3) == 0 && toXYZD50.get(1,3) == 0 && toXYZD50.get(2,3) == 0) {
-
-            skcms_Matrix3x3 m33;
-            for (int r = 0; r < 3; r++)
-            for (int c = 0; c < 3; c++) {
-                m33.vals[r][c] = toXYZD50.get(r,c);
-            }
-            skcms_TransferFunction tf;
-            memcpy(&tf, &fn, sizeof(tf));
-            return SkWriteICCProfile(tf, m33);
-        }
-        return nullptr;
-    }
-
-}
