diff --git a/gm/srgb_color_filter.cpp b/gm/srgb_color_filter.cpp
new file mode 100644
index 0000000..76c724f
--- /dev/null
+++ b/gm/srgb_color_filter.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2017 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "gm.h"
+
+#include "SkPM4fPriv.h"
+#include "SkToSRGBColorFilter.h"
+
+DEF_SIMPLE_GM_BG(srgb_color_filter, canvas, 130, 130, SK_ColorBLACK) {
+    // Src bitmap with some colors that we're going to interpret as being in a few different spaces
+    SkBitmap bmp;
+    bmp.allocN32Pixels(3, 2);
+    SkPMColor* pixels = reinterpret_cast<SkPMColor*>(bmp.getPixels());
+    pixels[0] = SkPackARGB32(0xFF, 0xA0, 0x00, 0x00);
+    pixels[1] = SkPackARGB32(0xFF, 0x00, 0xA0, 0x00);
+    pixels[2] = SkPackARGB32(0xFF, 0x00, 0x00, 0xA0);
+    pixels[3] = SkPackARGB32(0xFF, 0x00, 0xA0, 0xA0);
+    pixels[4] = SkPackARGB32(0xFF, 0xA0, 0x00, 0xA0);
+    pixels[5] = SkPackARGB32(0xFF, 0xA0, 0xA0, 0x00);
+
+    // Reference image
+    canvas->drawBitmapRect(bmp, SkRect::MakeXYWH(10, 10, 50, 50), nullptr);
+
+    auto srgb = SkColorSpace::MakeSRGB();
+    auto rec2020 = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma,
+                                         SkColorSpace::kRec2020_Gamut);
+
+    // NarrowGamut RGB (an artifically smaller than sRGB gamut)
+    SkColorSpacePrimaries narrowPrimaries = {
+        0.54f, 0.33f,     // Rx, Ry
+        0.33f, 0.50f,     // Gx, Gy
+        0.25f, 0.20f,     // Bx, By
+        0.3127f, 0.3290f, // Wx, Wy
+    };
+    SkMatrix44 narrowGamutRGBMatrix(SkMatrix44::kUninitialized_Constructor);
+    narrowPrimaries.toXYZD50(&narrowGamutRGBMatrix);
+    auto narrow = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma,
+                                        narrowGamutRGBMatrix);
+
+    SkPaint paint;
+
+    // Transforming sRGB -> sRGB should do nothing. Top two squares should look identical.
+    paint.setColorFilter(SkToSRGBColorFilter::Make(srgb));
+    canvas->drawBitmapRect(bmp, SkRect::MakeXYWH(70, 10, 50, 50), &paint);
+
+    // Rec2020 -> sRGB should produce more vivid colors.
+    paint.setColorFilter(SkToSRGBColorFilter::Make(rec2020));
+    canvas->drawBitmapRect(bmp, SkRect::MakeXYWH(10, 70, 50, 50), &paint);
+
+    // Narrow -> sRGB should produce more muted colors.
+    paint.setColorFilter(SkToSRGBColorFilter::Make(narrow));
+    canvas->drawBitmapRect(bmp, SkRect::MakeXYWH(70, 70, 50, 50), &paint);
+}
diff --git a/gn/gm.gni b/gn/gm.gni
index 7fd787c..97f8d83 100644
--- a/gn/gm.gni
+++ b/gn/gm.gni
@@ -277,6 +277,7 @@
   "$_gm/spritebitmap.cpp",
   "$_gm/srcmode.cpp",
   "$_gm/srgb.cpp",
+  "$_gm/srgb_color_filter.cpp",
   "$_gm/stlouisarch.cpp",
   "$_gm/stringart.cpp",
   "$_gm/stroke_rect_shader.cpp",
diff --git a/src/effects/SkToSRGBColorFilter.cpp b/src/effects/SkToSRGBColorFilter.cpp
index 253fea1..df3dec9 100644
--- a/src/effects/SkToSRGBColorFilter.cpp
+++ b/src/effects/SkToSRGBColorFilter.cpp
@@ -52,7 +52,11 @@
 }
 
 sk_sp<SkColorFilter> SkToSRGBColorFilter::Make(sk_sp<SkColorSpace> srcColorSpace) {
-    return sk_sp<SkColorFilter>(new SkToSRGBColorFilter(std::move(srcColorSpace)));
+    if (srcColorSpace->isSRGB()) {
+        return nullptr;
+    } else {
+        return sk_sp<SkColorFilter>(new SkToSRGBColorFilter(std::move(srcColorSpace)));
+    }
 }
 
 SkToSRGBColorFilter::SkToSRGBColorFilter(sk_sp<SkColorSpace> srcColorSpace)
