diff --git a/gm/displacement.cpp b/gm/displacement.cpp
index 91405d6..7b3d39c 100644
--- a/gm/displacement.cpp
+++ b/gm/displacement.cpp
@@ -68,7 +68,7 @@
             make_bitmaps();
             fInitialized = true;
         }
-        canvas->clear(0x00000000);
+        canvas->clear(SK_ColorBLACK);
         SkPaint paint;
         SkAutoTUnref<SkImageFilter> displ(SkBitmapSource::Create(fCheckerboard));
         paint.setImageFilter(SkDisplacementMapEffect::Create(
diff --git a/gm/imagefiltersclipped.cpp b/gm/imagefiltersclipped.cpp
index 44510fb..50066fe 100644
--- a/gm/imagefiltersclipped.cpp
+++ b/gm/imagefiltersclipped.cpp
@@ -68,7 +68,7 @@
             this->make_gradient_circle(64, 64);
             fInitialized = true;
         }
-        canvas->clear(0x00000000);
+        canvas->clear(SK_ColorBLACK);
 
         SkAutoTUnref<SkImageFilter> gradient(SkBitmapSource::Create(fGradientCircle));
         SkAutoTUnref<SkImageFilter> checkerboard(SkBitmapSource::Create(fCheckerboard));
diff --git a/gm/imagefiltersscaled.cpp b/gm/imagefiltersscaled.cpp
index 9c9ec15..4dcf753 100644
--- a/gm/imagefiltersscaled.cpp
+++ b/gm/imagefiltersscaled.cpp
@@ -68,7 +68,7 @@
             this->make_gradient_circle(64, 64);
             fInitialized = true;
         }
-        canvas->clear(0x00000000);
+        canvas->clear(SK_ColorBLACK);
 
         SkAutoTUnref<SkImageFilter> gradient(SkBitmapSource::Create(fGradientCircle));
         SkAutoTUnref<SkImageFilter> checkerboard(SkBitmapSource::Create(fCheckerboard));
diff --git a/gm/matrixconvolution.cpp b/gm/matrixconvolution.cpp
index 5b1ede3..b912f90 100644
--- a/gm/matrixconvolution.cpp
+++ b/gm/matrixconvolution.cpp
@@ -84,7 +84,7 @@
             make_bitmap();
             fInitialized = true;
         }
-        canvas->clear(0x00000000);
+        canvas->clear(SK_ColorBLACK);
         SkIPoint kernelOffset = SkIPoint::Make(1, 0);
         for (int x = 10; x < 310; x += 100) {
             this->draw(canvas, x, 10, kernelOffset, MCIF::kClamp_TileMode, true);
diff --git a/gm/matriximagefilter.cpp b/gm/matriximagefilter.cpp
index a42870b..419c419 100644
--- a/gm/matriximagefilter.cpp
+++ b/gm/matriximagefilter.cpp
@@ -58,7 +58,7 @@
     }
 
     virtual void onDraw(SkCanvas* canvas) {
-        canvas->clear(0x00000000);
+        canvas->clear(SK_ColorBLACK);
         SkMatrix matrix;
         SkScalar margin = SkIntToScalar(10);
         matrix.setSkew(SkDoubleToScalar(0.5), SkDoubleToScalar(0.2));
diff --git a/gm/offsetimagefilter.cpp b/gm/offsetimagefilter.cpp
index fb896dd..9808bd8 100644
--- a/gm/offsetimagefilter.cpp
+++ b/gm/offsetimagefilter.cpp
@@ -77,7 +77,7 @@
 
             fInitialized = true;
         }
-        canvas->clear(0x00000000);
+        canvas->clear(SK_ColorBLACK);
         SkPaint paint;
 
         for (int i = 0; i < 4; i++) {
diff --git a/gm/perlinnoise.cpp b/gm/perlinnoise.cpp
index b69b7d0..702e545 100644
--- a/gm/perlinnoise.cpp
+++ b/gm/perlinnoise.cpp
@@ -58,7 +58,7 @@
     }
 
     virtual void onDraw(SkCanvas* canvas) {
-        canvas->clear(0x00000000);
+        canvas->clear(SK_ColorBLACK);
         test(canvas,   0,   0, SkPerlinNoiseShader::kFractalNoise_Type,
              0.1f, 0.1f, 0, 0, false);
         test(canvas, 100,   0, SkPerlinNoiseShader::kTurbulence_Type,
diff --git a/gm/resizeimagefilter.cpp b/gm/resizeimagefilter.cpp
index b88c388..14f76b5 100644
--- a/gm/resizeimagefilter.cpp
+++ b/gm/resizeimagefilter.cpp
@@ -59,7 +59,7 @@
     }
 
     virtual void onDraw(SkCanvas* canvas) {
-        canvas->clear(0x00000000);
+        canvas->clear(SK_ColorBLACK);
 
         SkRect srcRect = SkRect::MakeWH(96, 96);
 
diff --git a/gm/tileimagefilter.cpp b/gm/tileimagefilter.cpp
index 89a6c6c..2c4f6b2 100644
--- a/gm/tileimagefilter.cpp
+++ b/gm/tileimagefilter.cpp
@@ -56,7 +56,7 @@
 
             fInitialized = true;
         }
-        canvas->clear(0x00000000);
+        canvas->clear(SK_ColorBLACK);
 
         int x = 0, y = 0;
         for (size_t i = 0; i < 4; i++) {
diff --git a/gm/xfermodeimagefilter.cpp b/gm/xfermodeimagefilter.cpp
index c764f1c..649e69f 100644
--- a/gm/xfermodeimagefilter.cpp
+++ b/gm/xfermodeimagefilter.cpp
@@ -74,7 +74,7 @@
     }
 
     void onDraw(SkCanvas* canvas) override {
-        canvas->clear(0x00000000);
+        canvas->clear(SK_ColorBLACK);
         SkPaint paint;
 
         const struct {
