diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp
index b8df23b..343350b 100644
--- a/src/core/SkPath.cpp
+++ b/src/core/SkPath.cpp
@@ -1032,7 +1032,7 @@
         return 1;
     } else if (0 == oval.width() && 0 == oval.height()) {
         // Chrome will sometimes create 0 radius round rects. Having degenerate
-        // quad segments in the path prevents the path from being recognized as 
+        // quad segments in the path prevents the path from being recognized as
         // a rect.
         // TODO: optimizing the case where only one of width or height is zero
         // should also be considered. This case, however, doesn't seem to be
diff --git a/src/gpu/gl/GrGLProgramStage.cpp b/src/gpu/gl/GrGLProgramStage.cpp
index 06a6f6d..4702f37 100644
--- a/src/gpu/gl/GrGLProgramStage.cpp
+++ b/src/gpu/gl/GrGLProgramStage.cpp
@@ -17,7 +17,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 
-void GrGLProgramStage::setData(const GrGLUniformManager&, const GrCustomStage&) {	
+void GrGLProgramStage::setData(const GrGLUniformManager&, const GrCustomStage&) {
 }
 
 GrGLProgramStage::StageKey GrGLProgramStage::GenTextureKey(const GrCustomStage& stage,
diff --git a/src/gpu/gl/GrGLShaderBuilder.cpp b/src/gpu/gl/GrGLShaderBuilder.cpp
index 2f24b07..04fe63e 100644
--- a/src/gpu/gl/GrGLShaderBuilder.cpp
+++ b/src/gpu/gl/GrGLShaderBuilder.cpp
@@ -292,13 +292,13 @@
             fFSHeader.append("layout(origin_upper_left) in vec4 gl_FragCoord;\n");
             fSetupFragPosition = true;
         }
-        return "gl_FragCoord";        
+        return "gl_FragCoord";
     } else {
         static const char* kCoordName = "fragCoordYDown";
         if (!fSetupFragPosition) {
             GrAssert(GrGLUniformManager::kInvalidUniformHandle == fRTHeightUniform);
             const char* rtHeightName;
-        
+
             // temporarily change the stage index because we're inserting a uniform whose name
             // shouldn't be mangled to be stage-specific.
             int oldStageIdx = fCurrentStage;
@@ -308,7 +308,7 @@
                                                 "RTHeight",
                                                 &rtHeightName);
             fCurrentStage = oldStageIdx;
-        
+
             this->fFSCode.prependf("\tvec4 %s = vec4(gl_FragCoord.x, %s - gl_FragCoord.y, gl_FragCoord.zw);\n",
                                    kCoordName, rtHeightName);
             fSetupFragPosition = true;
diff --git a/src/pdf/SkPDFFont.cpp b/src/pdf/SkPDFFont.cpp
index 3971281..9a8f136 100644
--- a/src/pdf/SkPDFFont.cpp
+++ b/src/pdf/SkPDFFont.cpp
@@ -707,7 +707,7 @@
             index = i;
         }
     }
-    
+
     SkDEBUGCODE(int indexFound;)
     SkASSERT(index == -1 ||
              (Find(SkTypeface::UniqueID(fTypeface.get()),
@@ -776,7 +776,7 @@
         // This only is to catch callers who pass invalid glyph ids.
         // If glyph id is invalid, then we will create duplicate entries
         // for True Type fonts.
-        SkAdvancedTypefaceMetrics::FontType fontType = 
+        SkAdvancedTypefaceMetrics::FontType fontType =
             fontMetrics.get() ? fontMetrics.get()->fType :
                                 SkAdvancedTypefaceMetrics::kOther_Font;
 
@@ -784,7 +784,7 @@
             fontType == SkAdvancedTypefaceMetrics::kTrueType_Font) {
             CanonicalFonts()[relatedFontIndex].fFont->ref();
             return CanonicalFonts()[relatedFontIndex].fFont;
-        }    
+        }
     } else {
         SkAdvancedTypefaceMetrics::PerGlyphInfo info;
         info = SkAdvancedTypefaceMetrics::kGlyphNames_PerGlyphInfo;
