diff --git a/src/core/SkFontStream.cpp b/src/core/SkFontStream.cpp
index ccdc1c7..ab16c71 100644
--- a/src/core/SkFontStream.cpp
+++ b/src/core/SkFontStream.cpp
@@ -61,7 +61,7 @@
         if ((unsigned)ttcIndex >= count) {
             return 0;
         }
-        
+
         if (ttcIndex > 0) { // need to read more of the shared header
             stream->rewind();
             size_t amount = sizeof(shared) + ttcIndex * sizeof(uint32_t);
@@ -138,7 +138,7 @@
         return SkEndian_SwapBE32(shared.fCollection.fNumOffsets);
     } else {
         return 0;
-    }        
+    }
 }
 
 int SkFontStream::GetTableTags(SkStream* stream, int ttcIndex,
diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp
index ddcccec..ba45ac3 100644
--- a/src/core/SkXfermode.cpp
+++ b/src/core/SkXfermode.cpp
@@ -443,8 +443,8 @@
 
 static inline int min2(int a, int b) { return a < b ? a : b; }
 static inline int max2(int a, int b) { return a > b ? a : b; }
-#define minimum(a, b, c) min2(min2(a, b), c) 
-#define maximum(a, b, c) max2(max2(a, b), c) 
+#define minimum(a, b, c) min2(min2(a, b), c)
+#define maximum(a, b, c) max2(max2(a, b), c)
 
 static inline int Sat(int r, int g, int b) {
     return maximum(r, g, b) - minimum(r, g, b);
@@ -549,7 +549,7 @@
 
 // kSaturation_Mode
 // B(Cb, Cs) = SetLum(SetSat(Cb, Sat(Cs)), Lum(Cb))
-// Create a color with the saturation of the source color and the hue and luminosity of the backdrop color. 
+// Create a color with the saturation of the source color and the hue and luminosity of the backdrop color.
 static SkPMColor saturation_modeproc(SkPMColor src, SkPMColor dst) {
     int sr = SkGetPackedR32(src);
     int sg = SkGetPackedG32(src);
@@ -587,7 +587,7 @@
 
 // kColor_Mode
 // B(Cb, Cs) = SetLum(Cs, Lum(Cb))
-// Create a color with the hue and saturation of the source color and the luminosity of the backdrop color. 
+// Create a color with the hue and saturation of the source color and the luminosity of the backdrop color.
 static SkPMColor color_modeproc(SkPMColor src, SkPMColor dst) {
     int sr = SkGetPackedR32(src);
     int sg = SkGetPackedG32(src);
@@ -623,7 +623,7 @@
 
 // kLuminosity_Mode
 // B(Cb, Cs) = SetLum(Cb, Lum(Cs))
-// Create a color with the luminosity of the source color and the hue and saturation of the backdrop color. 
+// Create a color with the luminosity of the source color and the hue and saturation of the backdrop color.
 static SkPMColor luminosity_modeproc(SkPMColor src, SkPMColor dst) {
     int sr = SkGetPackedR32(src);
     int sg = SkGetPackedG32(src);
diff --git a/src/pdf/SkPDFGraphicState.cpp b/src/pdf/SkPDFGraphicState.cpp
index 580d7e9..6ea535f 100644
--- a/src/pdf/SkPDFGraphicState.cpp
+++ b/src/pdf/SkPDFGraphicState.cpp
@@ -15,7 +15,7 @@
     switch (mode) {
         case SkXfermode::kSrcOver_Mode:    return "Normal";
         // kModulate is not really like multipy but similar most of the time.
-        case SkXfermode::kModulate_Mode: 
+        case SkXfermode::kModulate_Mode:
         case SkXfermode::kMultiply_Mode:   return "Multiply";
         case SkXfermode::kScreen_Mode:     return "Screen";
         case SkXfermode::kOverlay_Mode:    return "Overlay";
diff --git a/src/ports/SkFontHost_fontconfig.cpp b/src/ports/SkFontHost_fontconfig.cpp
index 7f6997a..786b2a2 100644
--- a/src/ports/SkFontHost_fontconfig.cpp
+++ b/src/ports/SkFontHost_fontconfig.cpp
@@ -271,7 +271,7 @@
     if (NULL == face) {
         return NULL;
     }
-    
+
     int ttcIndex;
     // We should return ttcIndex from this call.
     return open_stream(face, &ttcIndex);
