diff --git a/debugger/SkDebugCanvas.cpp b/debugger/SkDebugCanvas.cpp
index d9392bc..0c1c26b 100644
--- a/debugger/SkDebugCanvas.cpp
+++ b/debugger/SkDebugCanvas.cpp
@@ -201,8 +201,8 @@
 
 static SkBitmap createBitmap(const SkBitmap& input, const SkRect* srcRect) {
     SkBitmap bitmap;
-    bitmap.setConfig(SkBitmap::kARGB_8888_Config, 
-                     SkImageWidget::kImageWidgetWidth, 
+    bitmap.setConfig(SkBitmap::kARGB_8888_Config,
+                     SkImageWidget::kImageWidgetWidth,
                      SkImageWidget::kImageWidgetHeight);
     bitmap.allocPixels();
     bitmap.eraseColor(SK_ColorLTGRAY);
@@ -220,7 +220,7 @@
         xScale *= input.width() / (float) input.height();
     }
 
-    SkRect dst = SkRect::MakeXYWH(SK_Scalar1, SK_Scalar1, 
+    SkRect dst = SkRect::MakeXYWH(SK_Scalar1, SK_Scalar1,
                                   xScale * input.width(),
                                   yScale * input.height());
 
diff --git a/gm/blurrect.cpp b/gm/blurrect.cpp
index 6c74497..3d9a33a 100644
--- a/gm/blurrect.cpp
+++ b/gm/blurrect.cpp
@@ -99,7 +99,7 @@
         canvas->translate(STROKE_WIDTH*3/2, STROKE_WIDTH*3/2);
 
         SkRect  r = { 0, 0, 250, 120 };
-        
+
         SkPaint paint;
         paint.setMaskFilter(fMaskFilter);
         if (fPProc) {
diff --git a/src/gpu/GrClipMaskManager.cpp b/src/gpu/GrClipMaskManager.cpp
index ce520e7..cf1d2b3 100644
--- a/src/gpu/GrClipMaskManager.cpp
+++ b/src/gpu/GrClipMaskManager.cpp
@@ -73,7 +73,7 @@
     // walk backwards until we get to:
     //  a) the beginning
     //  b) an operation that is known to make the bounds all inside/outside
-    //  c) a replace operation    
+    //  c) a replace operation
 
     static const InitialState kUnknown_InitialState = static_cast<InitialState>(-1);
     *initialState = kUnknown_InitialState;
@@ -252,7 +252,7 @@
             SkClipStack::Iter::Clip* newClip = resultClips->prepend();
             // if it is a flip, change it to a bounds-filling rect
             if (isFlip) {
-                SkASSERT(SkRegion::kXOR_Op == clip->fOp || 
+                SkASSERT(SkRegion::kXOR_Op == clip->fOp ||
                          SkRegion::kReverseDifference_Op == clip->fOp);
                 newClip->fPath = NULL;
                 newClip->fRect = resultBounds;
diff --git a/tests/ClipStackTest.cpp b/tests/ClipStackTest.cpp
index 272ba1c..8e4d301 100644
--- a/tests/ClipStackTest.cpp
+++ b/tests/ClipStackTest.cpp
@@ -719,7 +719,7 @@
 
 static void test_reduced_clip_stack(skiatest::Reporter* reporter) {
     // We construct random clip stacks, reduce them, and then rasterize both versions to verify that
-    // they are equal. 
+    // they are equal.
 
     // All the clip elements will be contained within these bounds.
     static const SkRect kBounds = SkRect::MakeWH(100, 100);
@@ -768,10 +768,10 @@
                     continue;
                 }
             }
-            
+
             // saves can change the clip stack behavior when an element is added.
             bool doSave = r.nextBool();
-            
+
             SkSize size = SkSize::Make(
                 SkScalarFloorToScalar(SkScalarMul(kBounds.width(), r.nextRangeScalar(kMinElemSizeFrac, kMaxElemSizeFrac))),
                 SkScalarFloorToScalar(SkScalarMul(kBounds.height(), r.nextRangeScalar(kMinElemSizeFrac, kMaxElemSizeFrac))));
