diff --git a/include/gpu/GrColorSpaceXform.h b/include/gpu/GrColorSpaceXform.h
index ea90739..177230c 100644
--- a/include/gpu/GrColorSpaceXform.h
+++ b/include/gpu/GrColorSpaceXform.h
@@ -8,24 +8,25 @@
 #ifndef GrColorSpaceXform_DEFINED
 #define GrColorSpaceXform_DEFINED
 
-#include "SkMatrix44.h"
 #include "SkRefCnt.h"
 
 class SkColorSpace;
+class SkMatrix44;
 
  /**
   * Represents a color gamut transformation (as a 4x4 color matrix)
   */
 class GrColorSpaceXform : public SkRefCnt {
 public:
-    GrColorSpaceXform(const SkMatrix44& srcToDst) : fSrcToDst(srcToDst) {}
+    GrColorSpaceXform(const SkMatrix44& srcToDst);
 
     static sk_sp<GrColorSpaceXform> Make(SkColorSpace* src, SkColorSpace* dst);
 
-    const SkMatrix44& srcToDst() { return fSrcToDst; }
+    const float* srcToDst() { return fSrcToDst; }
 
 private:
-    SkMatrix44 fSrcToDst;
+    // We store the column-major form of the srcToDst matrix, for easy uploading to uniforms
+    float fSrcToDst[16];
 };
 
 #endif
diff --git a/src/gpu/GrColorSpaceXform.cpp b/src/gpu/GrColorSpaceXform.cpp
index f60dbcd..a1e8938 100644
--- a/src/gpu/GrColorSpaceXform.cpp
+++ b/src/gpu/GrColorSpaceXform.cpp
@@ -7,6 +7,7 @@
 
 #include "GrColorSpaceXform.h"
 #include "SkColorSpace.h"
+#include "SkMatrix44.h"
 
 static inline bool sk_float_almost_equals(float x, float y, float tol) {
     return sk_float_abs(x - y) <= tol;
@@ -33,6 +34,10 @@
         sk_float_almost_equals(m.getFloat(3, 3), 1.0f, tol);
 }
 
+GrColorSpaceXform::GrColorSpaceXform(const SkMatrix44& srcToDst) {
+    srcToDst.asColMajorf(fSrcToDst);
+}
+
 sk_sp<GrColorSpaceXform> GrColorSpaceXform::Make(SkColorSpace* src, SkColorSpace* dst) {
     if (!src || !dst) {
         // Invalid
diff --git a/src/gpu/effects/GrBicubicEffect.cpp b/src/gpu/effects/GrBicubicEffect.cpp
index db42f35..8439909 100644
--- a/src/gpu/effects/GrBicubicEffect.cpp
+++ b/src/gpu/effects/GrBicubicEffect.cpp
@@ -132,9 +132,7 @@
     pdman.setMatrix4f(fCoefficientsUni, bicubicEffect.coefficients());
     fDomain.setData(pdman, bicubicEffect.domain(), texture.origin());
     if (SkToBool(bicubicEffect.colorSpaceXform())) {
-        float xformMatrix[16];
-        bicubicEffect.colorSpaceXform()->srcToDst().asColMajorf(xformMatrix);
-        pdman.setMatrix4f(fColorSpaceXformUni, xformMatrix);
+        pdman.setMatrix4f(fColorSpaceXformUni, bicubicEffect.colorSpaceXform()->srcToDst());
     }
 }
 
