diff --git a/include/core/SkMaskFilter.h b/include/core/SkMaskFilter.h
index 40a03a5..fda1289 100644
--- a/include/core/SkMaskFilter.h
+++ b/include/core/SkMaskFilter.h
@@ -81,7 +81,7 @@
      *  as 'maskRect' but be translated to the upper-left corner of the mask
      *  (i.e., (maskRect.fLeft, maskRect.fTop) appears at (0, 0) in the mask).
      */
-    virtual bool canFilterMaskGPU(const SkRect& devBounds, 
+    virtual bool canFilterMaskGPU(const SkRect& devBounds,
                                   const SkIRect& clipBounds,
                                   const SkMatrix& ctm,
                                   SkRect* maskRect) const;
@@ -95,8 +95,8 @@
      *  on success. 'maskRect' should be the rect returned from canFilterMaskGPU.
      */
     bool filterMaskGPU(GrContext* context,
-                       const SkBitmap& src, 
-                       const SkRect& maskRect, 
+                       const SkBitmap& src,
+                       const SkRect& maskRect,
                        SkBitmap* result) const;
 
     /**
@@ -104,8 +104,8 @@
      *  the filtering capabilities. Setting 'canOverwriteSrc' can allow some
      *  filters to skip the allocation of an additional texture.
      */
-    virtual bool filterMaskGPU(GrTexture* src, 
-                               const SkRect& maskRect, 
+    virtual bool filterMaskGPU(GrTexture* src,
+                               const SkRect& maskRect,
                                GrTexture** result,
                                bool canOverwriteSrc) const;
 #endif
diff --git a/src/core/SkMaskFilter.cpp b/src/core/SkMaskFilter.cpp
index 23d9c31..9c367f9 100644
--- a/src/core/SkMaskFilter.cpp
+++ b/src/core/SkMaskFilter.cpp
@@ -277,7 +277,7 @@
     return false;
 }
 
-bool SkMaskFilter::canFilterMaskGPU(const SkRect& devBounds, 
+bool SkMaskFilter::canFilterMaskGPU(const SkRect& devBounds,
                                     const SkIRect& clipBounds,
                                     const SkMatrix& ctm,
                                     SkRect* maskRect) const {
@@ -285,8 +285,8 @@
 }
 
 bool SkMaskFilter::filterMaskGPU(GrContext* context,
-                                 const SkBitmap& srcBM, 
-                                 const SkRect& maskRect, 
+                                 const SkBitmap& srcBM,
+                                 const SkRect& maskRect,
                                  SkBitmap* resultBM) const {
     SkAutoTUnref<GrTexture> src;
     bool canOverwriteSrc = false;
@@ -299,7 +299,7 @@
         desc.fHeight    = srcBM.height();
 
         // TODO: right now this is exact to guard against out of bounds reads
-        // by the filter code. More thought needs to be devoted to the 
+        // by the filter code. More thought needs to be devoted to the
         // "filterMaskGPU" contract and then enforced (i.e., clamp the code
         // in "filterMaskGPU" so it never samples beyond maskRect)
         GrAutoScratchTexture ast(context, desc, GrContext::kExact_ScratchTexMatch);
@@ -331,8 +331,8 @@
     return true;
 }
 
-bool SkMaskFilter::filterMaskGPU(GrTexture* src, 
-                                 const SkRect& maskRect, 
+bool SkMaskFilter::filterMaskGPU(GrTexture* src,
+                                 const SkRect& maskRect,
                                  GrTexture** result,
                                  bool canOverwriteSrc) const {
     return false;
diff --git a/src/effects/SkBlurMaskFilter.cpp b/src/effects/SkBlurMaskFilter.cpp
index a57d77a..85176d6 100644
--- a/src/effects/SkBlurMaskFilter.cpp
+++ b/src/effects/SkBlurMaskFilter.cpp
@@ -32,12 +32,12 @@
                             SkIPoint* margin) const SK_OVERRIDE;
 
 #if SK_SUPPORT_GPU
-    virtual bool canFilterMaskGPU(const SkRect& devBounds, 
+    virtual bool canFilterMaskGPU(const SkRect& devBounds,
                                   const SkIRect& clipBounds,
                                   const SkMatrix& ctm,
                                   SkRect* maskRect) const SK_OVERRIDE;
-    virtual bool filterMaskGPU(GrTexture* src, 
-                               const SkRect& maskRect, 
+    virtual bool filterMaskGPU(GrTexture* src,
+                               const SkRect& maskRect,
                                GrTexture** result,
                                bool canOverwriteSrc) const;
 #endif
@@ -389,11 +389,11 @@
     clipRect.outset(SkFloatToScalar(sigma3), SkFloatToScalar(sigma3));
     srcRect.intersect(clipRect);
     *maskRect = srcRect;
-    return true; 
+    return true;
 }
 
-bool SkBlurMaskFilterImpl::filterMaskGPU(GrTexture* src, 
-                                         const SkRect& maskRect, 
+bool SkBlurMaskFilterImpl::filterMaskGPU(GrTexture* src,
+                                         const SkRect& maskRect,
                                          GrTexture** result,
                                          bool canOverwriteSrc) const {
     SkRect clipRect = SkRect::MakeWH(maskRect.width(), maskRect.height());
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index 01b8021..766158f 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -984,7 +984,7 @@
 
             GrAutoScratchTexture mask;
 
-            if (create_mask_GPU(fContext, maskRect, *devPathPtr, stroke, 
+            if (create_mask_GPU(fContext, maskRect, *devPathPtr, stroke,
                                 grPaint.isAntiAlias(), &mask)) {
                 GrTexture* filtered;
 
