diff --git a/debugger/QT/SkDebuggerGUI.cpp b/debugger/QT/SkDebuggerGUI.cpp
index 448e449..48f18d4 100644
--- a/debugger/QT/SkDebuggerGUI.cpp
+++ b/debugger/QT/SkDebuggerGUI.cpp
@@ -722,7 +722,7 @@
     fCanvasWidget.setSizePolicy(QSizePolicy::Expanding,
             QSizePolicy::Expanding);
 
-    fImageWidget.setFixedSize(SkImageWidget::kImageWidgetWidth, 
+    fImageWidget.setFixedSize(SkImageWidget::kImageWidgetWidth,
                               SkImageWidget::kImageWidgetHeight);
 
     fInspectorWidget.setSizePolicy(QSizePolicy::Expanding,
diff --git a/debugger/QT/SkImageWidget.cpp b/debugger/QT/SkImageWidget.cpp
index 36a1b3d..10fe0b1 100644
--- a/debugger/QT/SkImageWidget.cpp
+++ b/debugger/QT/SkImageWidget.cpp
@@ -11,7 +11,7 @@
 #include "SkDebugger.h"
 #include "SkImageWidget.h"
 
-SkImageWidget::SkImageWidget(SkDebugger *debugger) 
+SkImageWidget::SkImageWidget(SkDebugger *debugger)
     : QWidget()
     , fDebugger(debugger) {
     this->setStyleSheet("QWidget {background-color: white; border: 1px solid #cccccc;}");
diff --git a/debugger/SkDebugCanvas.cpp b/debugger/SkDebugCanvas.cpp
index 03c3c16..a0d5eb3 100644
--- a/debugger/SkDebugCanvas.cpp
+++ b/debugger/SkDebugCanvas.cpp
@@ -169,8 +169,8 @@
 
 static SkBitmap createBitmap(const SkPath& path) {
     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_ColorWHITE);
@@ -182,10 +182,10 @@
     const SkRect& bounds = path.getBounds();
 
     if (bounds.width() > bounds.height()) {
-        canvas.scale(SkDoubleToScalar((0.9*SkImageWidget::kImageWidgetWidth)/bounds.width()), 
+        canvas.scale(SkDoubleToScalar((0.9*SkImageWidget::kImageWidgetWidth)/bounds.width()),
                      SkDoubleToScalar((0.9*SkImageWidget::kImageWidgetHeight)/bounds.width()));
     } else {
-        canvas.scale(SkDoubleToScalar((0.9*SkImageWidget::kImageWidgetWidth)/bounds.height()), 
+        canvas.scale(SkDoubleToScalar((0.9*SkImageWidget::kImageWidgetWidth)/bounds.height()),
                      SkDoubleToScalar((0.9*SkImageWidget::kImageWidgetHeight)/bounds.height()));
     }
     canvas.translate(-bounds.fLeft+2, -bounds.fTop+2);
diff --git a/experimental/Intersection/Simplify.cpp b/experimental/Intersection/Simplify.cpp
index 366aa8b..31e59cc 100644
--- a/experimental/Intersection/Simplify.cpp
+++ b/experimental/Intersection/Simplify.cpp
@@ -3156,7 +3156,7 @@
         fBounds.set(SK_ScalarMax, SK_ScalarMax, SK_ScalarMax, SK_ScalarMax);
         fTs.reset();
     }
-    
+
     // This marks all spans unsortable so that this info is available for early
     // exclusion in find top and others. This could be optimized to only mark
     // adjacent spans that unsortable. However, this makes it difficult to later
diff --git a/tests/DeferredCanvasTest.cpp b/tests/DeferredCanvasTest.cpp
index 6bbcf82..6cc3b08 100644
--- a/tests/DeferredCanvasTest.cpp
+++ b/tests/DeferredCanvasTest.cpp
@@ -395,7 +395,7 @@
     SkBitmap store;
     store.setConfig(SkBitmap::kARGB_8888_Config, 100, 100);
     store.allocPixels();
-    
+
     SkBitmap sourceImage;
     // 100 by 100 image, takes 40,000 bytes in memory
     sourceImage.setConfig(SkBitmap::kARGB_8888_Config, 100, 100);
diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp
index 58f864d..f1894c3 100644
--- a/tests/PathTest.cpp
+++ b/tests/PathTest.cpp
@@ -1059,7 +1059,7 @@
             expected.set(tests[testIndex], testLen[testIndex] / sizeof(SkPoint));
             REPORTER_ASSERT(reporter, path.isRect(&computed));
             REPORTER_ASSERT(reporter, expected == computed);
-            
+
             bool isClosed;
             SkPath::Direction direction, cheapDirection;
             REPORTER_ASSERT(reporter, path.cheapComputeDirection(&cheapDirection));
@@ -1079,7 +1079,7 @@
             REPORTER_ASSERT(reporter, isClosed == (bool) -1);
             REPORTER_ASSERT(reporter, direction == (SkPath::Direction) -1);
         }
-        
+
         if (tests[testIndex] == lastPass) {
             fail = true;
         }
