diff --git a/samplecode/SampleClip.cpp b/samplecode/SampleClip.cpp
index 6695c62..ce3736e 100644
--- a/samplecode/SampleClip.cpp
+++ b/samplecode/SampleClip.cpp
@@ -22,7 +22,7 @@
     paint.setAntiAlias(doAA);
     paint.setLCDRenderText(true);
     paint.setTextSize(SkIntToScalar(20));
-    
+
     for (int i = 0; i < 200; ++i) {
         paint.setColor((SK_A32_MASK << SK_A32_SHIFT) | rand.nextU());
         canvas->drawText("Hamburgefons", 12,
@@ -35,16 +35,16 @@
     SkRandom rand;
     SkPaint paint;
     paint.setAntiAlias(doAA);
-    
+
     for (int i = 0; i < 50; ++i) {
         SkRect r;
         SkPath p;
-        
+
         r.setXYWH(rand.nextSScalar1() * W, rand.nextSScalar1() * H,
                   rand.nextUScalar1() * W, rand.nextUScalar1() * H);
         paint.setColor(rand.nextU());
         canvas->drawRect(r, paint);
-        
+
         r.setXYWH(rand.nextSScalar1() * W, rand.nextSScalar1() * H,
                   rand.nextUScalar1() * W, rand.nextUScalar1() * H);
         paint.setColor(rand.nextU());
@@ -64,16 +64,16 @@
     paint.setAntiAlias(doAA);
     paint.setStyle(SkPaint::kStroke_Style);
     paint.setStrokeWidth(strokeWidth);
-    
+
     for (int i = 0; i < n; ++i) {
         SkRect r;
         SkPath p;
-        
+
         r.setXYWH(rand.nextSScalar1() * W, rand.nextSScalar1() * H,
                   rand.nextUScalar1() * W, rand.nextUScalar1() * H);
         paint.setColor(rand.nextU());
         canvas->drawRect(r, paint);
-        
+
         r.setXYWH(rand.nextSScalar1() * W, rand.nextSScalar1() * H,
                   rand.nextUScalar1() * W, rand.nextUScalar1() * H);
         paint.setColor(rand.nextU());
@@ -131,7 +131,7 @@
         static const CanvasProc gProc[] = {
             show_text, show_thick, show_hair, show_fill
         };
-        
+
         SkRect r = { 0, 0, SkIntToScalar(W), SkIntToScalar(H) };
         SkPath clipPath;
         r.inset(SK_Scalar1 / 4, SK_Scalar1 / 4);
@@ -153,7 +153,7 @@
             canvas->translate(0, H * SK_Scalar1 * 8 / 7);
         }
     }
-    
+
 private:
     typedef SampleView INHERITED;
 };
