diff --git a/expectations/gm/ignored-tests.txt b/expectations/gm/ignored-tests.txt
index 5db45ea..2b60fb2 100644
--- a/expectations/gm/ignored-tests.txt
+++ b/expectations/gm/ignored-tests.txt
@@ -71,3 +71,6 @@
 imagefiltersbase
 imageblur
 colorfilterimagefilter
+
+# Added by sugoi in https://codereview.chromium.org/59173005
+perlinnoise
diff --git a/gm/perlinnoise.cpp b/gm/perlinnoise.cpp
index a2ec916..098c690 100644
--- a/gm/perlinnoise.cpp
+++ b/gm/perlinnoise.cpp
@@ -23,7 +23,7 @@
     }
 
     virtual SkISize onISize() {
-        return make_isize(200, 400);
+        return make_isize(200, 500);
     }
 
     void drawClippedRect(SkCanvas* canvas, int x, int y, const SkPaint& paint) {
@@ -52,27 +52,31 @@
 
     virtual void onDraw(SkCanvas* canvas) {
         canvas->clear(0x00000000);
+        test(canvas,   0,   0, SkPerlinNoiseShader::kFractalNoise_Type,
+             0.1f, 0.1f, 0, 0, false);
+        test(canvas, 100,   0, SkPerlinNoiseShader::kTurbulence_Type,
+             0.1f, 0.1f, 0, 0, false);
 
-        test(canvas,   0, 0, SkPerlinNoiseShader::kFractalNoise_Type,
+        test(canvas,   0, 100, SkPerlinNoiseShader::kFractalNoise_Type,
              0.1f, 0.1f, 2, 0, false);
-        test(canvas, 100, 0, SkPerlinNoiseShader::kFractalNoise_Type,
+        test(canvas, 100, 100, SkPerlinNoiseShader::kFractalNoise_Type,
              0.2f, 0.4f, 5, 0, true);
 
-        test(canvas,   0, 100, SkPerlinNoiseShader::kTurbulence_Type,
+        test(canvas,   0, 200, SkPerlinNoiseShader::kTurbulence_Type,
              0.1f, 0.1f, 2, 0, true);
-        test(canvas, 100, 100, SkPerlinNoiseShader::kTurbulence_Type,
+        test(canvas, 100, 200, SkPerlinNoiseShader::kTurbulence_Type,
              0.2f, 0.4f, 5, 0, false);
 
-        test(canvas,   0, 200, SkPerlinNoiseShader::kFractalNoise_Type,
+        test(canvas,   0, 300, SkPerlinNoiseShader::kFractalNoise_Type,
              0.1f, 0.1f, 3, 1, false);
-        test(canvas, 100, 200, SkPerlinNoiseShader::kFractalNoise_Type,
+        test(canvas, 100, 300, SkPerlinNoiseShader::kFractalNoise_Type,
              0.1f, 0.1f, 3, 4, false);
 
         canvas->scale(SkFloatToScalar(0.75f), SkFloatToScalar(1.0f));
 
-        test(canvas,   0, 300, SkPerlinNoiseShader::kFractalNoise_Type,
+        test(canvas,   0, 400, SkPerlinNoiseShader::kFractalNoise_Type,
              0.1f, 0.1f, 2, 0, false);
-        test(canvas, 100, 300, SkPerlinNoiseShader::kFractalNoise_Type,
+        test(canvas, 100, 400, SkPerlinNoiseShader::kFractalNoise_Type,
              0.2f, 0.4f, 5, 0, true);
     }
 
diff --git a/src/effects/SkPerlinNoiseShader.cpp b/src/effects/SkPerlinNoiseShader.cpp
index af51afc..f2ce679 100644
--- a/src/effects/SkPerlinNoiseShader.cpp
+++ b/src/effects/SkPerlinNoiseShader.cpp
@@ -7,6 +7,7 @@
 
 #include "SkDither.h"
 #include "SkPerlinNoiseShader.h"
+#include "SkColorFilter.h"
 #include "SkFlattenableBuffers.h"
 #include "SkShader.h"
 #include "SkUnPreMultiply.h"
@@ -1295,6 +1296,16 @@
 GrEffectRef* SkPerlinNoiseShader::asNewEffect(GrContext* context, const SkPaint& paint) const {
     SkASSERT(NULL != context);
 
+    if (0 == fNumOctaves) {
+        SkColor clearColor = 0;
+        if (kFractalNoise_Type == fType) {
+            clearColor = SkColorSetARGB(paint.getAlpha() / 2, 127, 127, 127);
+        }
+        SkAutoTUnref<SkColorFilter> cf(SkColorFilter::CreateModeFilter(
+                                                clearColor, SkXfermode::kSrc_Mode));
+        return cf->asNewEffect(context);
+    }
+
     // Either we don't stitch tiles, either we have a valid tile size
     SkASSERT(!fStitchTiles || !fTileSize.isEmpty());
 
