diff --git a/gm/fatpathfill.cpp b/gm/fatpathfill.cpp
index 4c5fee0..3fea6f4 100644
--- a/gm/fatpathfill.cpp
+++ b/gm/fatpathfill.cpp
@@ -29,7 +29,7 @@
     SkPaint paint;
     paint.setColor(0xFF0088FF);
     paint.setAntiAlias(true);
-    
+
     for (int y = 0; y < SMALL_H; ++y) {
         for (int x = 0; x < SMALL_W; ++x) {
             canvas->drawCircle(x + 0.5f, y + 0.5f, 1.5f / ZOOM, paint);
@@ -84,7 +84,7 @@
             line.moveTo(1, 2); line.lineTo(4 + i, 1);
             paint.getFillPath(line, &path);
             draw_fatpath(canvas, surface, &path, 1);
-            
+
             canvas->translate(0, SMALL_H);
         }
     }
diff --git a/src/effects/SkLightingImageFilter.cpp b/src/effects/SkLightingImageFilter.cpp
index 82e1f22..0aa90ef 100644
--- a/src/effects/SkLightingImageFilter.cpp
+++ b/src/effects/SkLightingImageFilter.cpp
@@ -372,7 +372,7 @@
      */
     void emitLightColorUniform(GrGLShaderBuilder*);
 
-    /** 
+    /**
      * These two functions are called from GrGLLightingEffect's emitCode() function.
      * emitSurfaceToLight places an expression in param out that is the vector from the surface to
      * the light. The expression will be used in the FS. emitLightColor writes an expression into
@@ -1421,7 +1421,7 @@
                           gLightColorArgs,
                           lightColorBody.c_str(),
                           &fLightColorFunc);
-                                       
+
     builder->fFSCode.appendf("%s(%s)", fLightColorFunc.c_str(), surfaceToLight);
 }
 
diff --git a/src/gpu/gl/GrGLProgram.cpp b/src/gpu/gl/GrGLProgram.cpp
index 4450209..cd16d9e 100644
--- a/src/gpu/gl/GrGLProgram.cpp
+++ b/src/gpu/gl/GrGLProgram.cpp
@@ -566,7 +566,7 @@
     fUniforms.fViewMatrixUni = builder.addUniform(GrGLShaderBuilder::kVertex_ShaderType,
                                                   kMat33f_GrSLType, "ViewM", &viewMName);
 
-    
+
     builder.fVSCode.appendf("\tvec3 pos3 = %s * vec3(%s, 1);\n"
                             "\tgl_Position = vec4(pos3.xy, 0, pos3.z);\n",
                             viewMName, builder.positionAttribute().getName().c_str());
diff --git a/src/gpu/gl/GrGLShaderBuilder.cpp b/src/gpu/gl/GrGLShaderBuilder.cpp
index 463c036..07cdbff 100644
--- a/src/gpu/gl/GrGLShaderBuilder.cpp
+++ b/src/gpu/gl/GrGLShaderBuilder.cpp
@@ -96,7 +96,7 @@
     , fSetupFragPosition(false)
     , fRTHeightUniform(GrGLUniformManager::kInvalidUniformHandle)
     , fTexCoordVaryingType(kVoid_GrSLType) {
-    
+
     fPositionVar = &fVSAttrs.push_back();
     fPositionVar->set(kVec2f_GrSLType, GrGLShaderVar::kAttribute_TypeModifier, "aPosition");
 }
diff --git a/src/gpu/gl/GrGLTexture.cpp b/src/gpu/gl/GrGLTexture.cpp
index c1821b2..6c815e8 100644
--- a/src/gpu/gl/GrGLTexture.cpp
+++ b/src/gpu/gl/GrGLTexture.cpp
@@ -26,7 +26,7 @@
                                      (GPUGL->glInterface(),
                                       textureDesc.fTextureID,
                                       textureDesc.fOwnsID));
-    
+
     if (NULL != rtDesc) {
         GrAssert(kBottomLeft_Origin == textureDesc.fOrigin);
         GrGLIRect vp;
