diff --git a/include/gpu/GrTypes.h b/include/gpu/GrTypes.h
index bf599a0..0c7b458 100644
--- a/include/gpu/GrTypes.h
+++ b/include/gpu/GrTypes.h
@@ -485,7 +485,7 @@
      * Initialize the cache ID to a domain and key.
      */
     GrCacheID(Domain domain, const Key& key) {
-        GrAssert(kInvalid_Domain != domain); 
+        GrAssert(kInvalid_Domain != domain);
         this->reset(domain, key);
     }
 
@@ -499,7 +499,7 @@
 
     const Key& getKey() const { GrAssert(this->isValid()); return fKey; }
     Domain getDomain() const { GrAssert(this->isValid()); return fDomain; }
-    
+
     /** Creates a new unique ID domain. */
     static Domain GenerateDomain();
 
diff --git a/src/gpu/GrResourceCache.h b/src/gpu/GrResourceCache.h
index 2177b46..dd8ba31 100644
--- a/src/gpu/GrResourceCache.h
+++ b/src/gpu/GrResourceCache.h
@@ -117,7 +117,7 @@
             uint8_t  fKey8[kKeySize];
             uint32_t fKey32[kKeySize / 4];
         } keyData;
-        
+
         uint8_t* k = keyData.fKey8;
         memcpy(k + kCacheIDKeyOffset, key.fData8, sizeof(GrCacheID::Key));
         memcpy(k + kCacheIDDomainOffset, &domain, sizeof(GrCacheID::Domain));
@@ -134,7 +134,7 @@
         int compare(const HashedKey& hashedKey) const {
             return fHashedKey.compare(fHashedKey);
         }
-        
+
         HashedKey fHashedKey;
     };
 
diff --git a/src/gpu/GrTexture.cpp b/src/gpu/GrTexture.cpp
index eb3a586..8aabc2f 100644
--- a/src/gpu/GrTexture.cpp
+++ b/src/gpu/GrTexture.cpp
@@ -125,7 +125,7 @@
     kStretchToPOT_TextureFlag = 0x1,
     /**
      * The kFilter bit can only be set when the kStretchToPOT flag is set and indicates whether the
-     * stretched texture should be bilerp filtered or point sampled. 
+     * stretched texture should be bilerp filtered or point sampled.
      */
     kFilter_TextureFlag       = 0x2,
 };
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
index 7cee974..695b1df 100644
--- a/src/gpu/SkGr.cpp
+++ b/src/gpu/SkGr.cpp
@@ -64,7 +64,7 @@
     int16_t width = static_cast<int16_t>(bitmap.width());
     int16_t height = static_cast<int16_t>(bitmap.height());
 
-    GrCacheID::Key key;        
+    GrCacheID::Key key;
     memcpy(key.fData8, &genID, 4);
     memcpy(key.fData8 + 4, &width, 2);
     memcpy(key.fData8 + 6, &height, 2);
diff --git a/src/gpu/effects/GrTextureStripAtlas.cpp b/src/gpu/effects/GrTextureStripAtlas.cpp
index 30d7ce4..bd256c5 100644
--- a/src/gpu/effects/GrTextureStripAtlas.cpp
+++ b/src/gpu/effects/GrTextureStripAtlas.cpp
@@ -195,7 +195,7 @@
     texDesc.fWidth = fDesc.fWidth;
     texDesc.fHeight = fDesc.fHeight;
     texDesc.fConfig = fDesc.fConfig;
-    
+
     static const GrCacheID::Domain gTextureStripAtlasDomain = GrCacheID::GenerateDomain();
     GrCacheID::Key key;
     *key.fData32 = fCacheKey;
