diff --git a/gm/arcofzorro.cpp b/gm/arcofzorro.cpp
index 1e38130..f1f1195 100644
--- a/gm/arcofzorro.cpp
+++ b/gm/arcofzorro.cpp
@@ -10,7 +10,7 @@
 
 namespace skiagm {
 
-// This GM draws a lot of arcs in a 'Z' shape. It particularly exercises 
+// This GM draws a lot of arcs in a 'Z' shape. It particularly exercises
 // the 'drawArc' code near a singularly of its processing (i.e., near the
 // edge of one of its underlying quads).
 class ArcOfZorroGM : public GM {
diff --git a/gm/gradientDirtyLaundry.cpp b/gm/gradientDirtyLaundry.cpp
index adf59b6..ff6864a 100644
--- a/gm/gradientDirtyLaundry.cpp
+++ b/gm/gradientDirtyLaundry.cpp
@@ -63,7 +63,7 @@
 typedef SkShader* (*GradMaker)(const SkPoint pts[2], const GradData& data,
                                SkShader::TileMode tm, SkUnitMapper* mapper);
 static const GradMaker gGradMakers[] = {
-    MakeLinear, MakeRadial, MakeSweep, 
+    MakeLinear, MakeRadial, MakeSweep,
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/scalebitmap.cpp b/gm/scalebitmap.cpp
index 5d08ba8..c015062 100644
--- a/gm/scalebitmap.cpp
+++ b/gm/scalebitmap.cpp
@@ -11,15 +11,15 @@
 #include "SkStream.h"
 
 class ScaleBitmapGM : public skiagm::GM {
-    
+
 public:
-    
+
     ScaleBitmapGM(const char filename[], float scale)
         : fFilename(filename), fScale(scale)
     {
         this->setBGColor(0xFFDDDDDD);
         fName.printf("scalebitmap_%s_%f", filename, scale);
-        
+
         SkString path(skiagm::GM::gResourcePath);
         path.append("/");
         path.append(fFilename);
@@ -43,15 +43,15 @@
     }
 
 protected:
-    
-    
+
+
     SkBitmap    fBM;
     SkString    fName;
     SkString    fFilename;
     int         fSize;
     float       fScale;
-    
-    
+
+
     virtual SkString onShortName() SK_OVERRIDE {
         return fName;
     }
@@ -65,7 +65,7 @@
         dst.setConfig(SkBitmap::kARGB_8888_Config, fBM.width() * fScale, fBM.height() * fScale);
         dst.allocPixels();
         fBM.scale(&dst);
-        
+
         canvas->drawBitmap(dst, 0, 0);
     }
 
@@ -75,7 +75,7 @@
 
 class ScaleBitmapMipmapGM: public ScaleBitmapGM {
     SkMatrix fMatrix;
-    
+
 public:
     ScaleBitmapMipmapGM(const char filename[], float scale)
         : INHERITED(filename, scale)
@@ -87,12 +87,12 @@
 protected:
     virtual void onDraw(SkCanvas *canvas) SK_OVERRIDE {
         SkPaint paint;
-        
+
         paint.setFilterBitmap(true);
         canvas->drawBitmapMatrix(fBM, fMatrix, &paint);
     }
 private:
-     typedef ScaleBitmapGM INHERITED;  
+     typedef ScaleBitmapGM INHERITED;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -111,4 +111,3 @@
 DEF_GM( return new ScaleBitmapMipmapGM("nature.jpg", 0.25f); )
 DEF_GM( return new ScaleBitmapMipmapGM("nature.jpg", 0.125f); )
 DEF_GM( return new ScaleBitmapMipmapGM("nature.jpg", 0.0625f); )
-
