diff --git a/src/core/SkImageInfoPriv.h b/src/core/SkImageInfoPriv.h
index 72138ae..2b09a4e 100644
--- a/src/core/SkImageInfoPriv.h
+++ b/src/core/SkImageInfoPriv.h
@@ -51,6 +51,8 @@
  *      should we use kPremul or kUnpremul color values with the opaque alphas?  Or should
  *      we just use whatever the |src| alpha is?  In the future, we could choose to clearly
  *      define this, but currently no one is asking for this feature.
+ *      We will not convert to a particular color space if |src| is nullptr.  The color space
+ *      conversion is not well-defined.
  */
 static inline bool SkImageInfoValidConversion(const SkImageInfo& dst, const SkImageInfo& src) {
     if (!SkImageInfoIsValid(dst) || !SkImageInfoIsValid(src)) {
@@ -73,5 +75,9 @@
         return false;
     }
 
+    if (dst.colorSpace() && !src.colorSpace()) {
+        return false;
+    }
+
     return true;
 }
diff --git a/tests/ImageTest.cpp b/tests/ImageTest.cpp
index 4f9d944..904ca20 100644
--- a/tests/ImageTest.cpp
+++ b/tests/ImageTest.cpp
@@ -34,6 +34,14 @@
 
 using namespace sk_gpu_test;
 
+SkImageInfo read_pixels_info(SkImage* image) {
+    if (as_IB(image)->onImageInfo().colorSpace()) {
+        return SkImageInfo::MakeS32(image->width(), image->height(), image->alphaType());
+    }
+
+    return SkImageInfo::MakeN32(image->width(), image->height(), image->alphaType());
+}
+
 static void assert_equal(skiatest::Reporter* reporter, SkImage* a, const SkIRect* subsetA,
                          SkImage* b) {
     const int widthA = subsetA ? subsetA->width() : a->width();
@@ -45,11 +53,9 @@
     // see https://bug.skia.org/3965
     //REPORTER_ASSERT(reporter, a->isOpaque() == b->isOpaque());
 
-    // The codecs may have given us back F16, we can't read from F16 raster to N32, only S32.
-    SkImageInfo info = SkImageInfo::MakeS32(widthA, heightA, a->alphaType());
     SkAutoPixmapStorage pmapA, pmapB;
-    pmapA.alloc(info);
-    pmapB.alloc(info);
+    pmapA.alloc(read_pixels_info(a));
+    pmapB.alloc(read_pixels_info(b));
 
     const int srcX = subsetA ? subsetA->x() : 0;
     const int srcY = subsetA ? subsetA->y() : 0;
@@ -57,7 +63,7 @@
     REPORTER_ASSERT(reporter, a->readPixels(pmapA, srcX, srcY));
     REPORTER_ASSERT(reporter, b->readPixels(pmapB, 0, 0));
 
-    const size_t widthBytes = widthA * info.bytesPerPixel();
+    const size_t widthBytes = widthA * 4;
     for (int y = 0; y < heightA; ++y) {
         REPORTER_ASSERT(reporter, !memcmp(pmapA.addr32(0, y), pmapB.addr32(0, y), widthBytes));
     }
