diff --git a/bench/RectBench.cpp b/bench/RectBench.cpp
index 17fccfd..4a2d3c5 100644
--- a/bench/RectBench.cpp
+++ b/bench/RectBench.cpp
@@ -23,7 +23,7 @@
     SkRect  fRects[N];
     SkColor fColors[N];
 
-    RectBench(void* param, int shift, int stroke = 0) 
+    RectBench(void* param, int shift, int stroke = 0)
         : INHERITED(param)
         , fShift(shift)
         , fStroke(stroke) {
@@ -185,7 +185,7 @@
         // Draw small aa rects in a grid across the screen
         for (SkScalar y = SK_ScalarHalf; y < H; y += SkIntToScalar(2)) {
             for (SkScalar x = SK_ScalarHalf; x < W; x += SkIntToScalar(2)) {
-                r.set(x, y, 
+                r.set(x, y,
                       x+SkFloatToScalar(1.5f), y+SkFloatToScalar(1.5f));
                 canvas->drawRect(r, paint);
             }
diff --git a/gm/simpleaaclip.cpp b/gm/simpleaaclip.cpp
index b32ed9f..885226b 100644
--- a/gm/simpleaaclip.cpp
+++ b/gm/simpleaaclip.cpp
@@ -198,5 +198,5 @@
 DEF_GM( return new SimpleClipGM(SimpleClipGM::kRect_GeomType); )
 DEF_GM( return new SimpleClipGM(SimpleClipGM::kPath_GeomType); )
 DEF_GM( return new SimpleClipGM(SimpleClipGM::kAAClip_GeomType); )
-    
+
 }
diff --git a/src/effects/SkDashPathEffect.cpp b/src/effects/SkDashPathEffect.cpp
index 4f695ad..10ef81b 100644
--- a/src/effects/SkDashPathEffect.cpp
+++ b/src/effects/SkDashPathEffect.cpp
@@ -198,12 +198,12 @@
                 addedSegment = true;
 
                 if (specialLine) {
-                    lineRec.addSegment(SkDoubleToScalar(distance), 
-                                       SkDoubleToScalar(distance + dlen), 
+                    lineRec.addSegment(SkDoubleToScalar(distance),
+                                       SkDoubleToScalar(distance + dlen),
                                        dst);
                 } else {
-                    meas.getSegment(SkDoubleToScalar(distance), 
-                                    SkDoubleToScalar(distance + dlen), 
+                    meas.getSegment(SkDoubleToScalar(distance),
+                                    SkDoubleToScalar(distance + dlen),
                                     dst, true);
                 }
             }
diff --git a/src/gpu/GrClipMaskManager.cpp b/src/gpu/GrClipMaskManager.cpp
index f14a374..fbb1a0e 100644
--- a/src/gpu/GrClipMaskManager.cpp
+++ b/src/gpu/GrClipMaskManager.cpp
@@ -522,14 +522,14 @@
                 if (NULL == temp.texture()) {
                     fAACache.reset();
                     return NULL;
-                }   
+                }
                 dst = temp.texture();
                 // clear the temp target and set blend to replace
                 fGpu->clear(&maskSpaceElementIBounds,
                             invert ? 0xffffffff : 0x00000000,
                             dst->asRenderTarget());
                 setup_boolean_blendcoeffs(drawState, SkRegion::kReplace_Op);
-                
+
             } else {
                 // draw directly into the result with the stencil set to make the pixels affected
                 // by the clip shape be non-zero.
@@ -542,7 +542,7 @@
                                              0xffff,
                                              0xffff);
                 drawState->setStencil(kStencilInElement);
-                setup_boolean_blendcoeffs(drawState, op);                
+                setup_boolean_blendcoeffs(drawState, op);
             }
 
             drawState->setAlpha(invert ? 0x00 : 0xff);
