diff --git a/src/gpu/GrTextureAccess.cpp b/src/gpu/GrTextureAccess.cpp
index ae6c042..122a209 100644
--- a/src/gpu/GrTextureAccess.cpp
+++ b/src/gpu/GrTextureAccess.cpp
@@ -42,8 +42,8 @@
 void GrTextureAccess::reset(GrTexture* texture,
                             const char* swizzle,
                             const GrTextureParams& params) {
-    GrAssert(NULL != texture);
-    GrAssert(strlen(swizzle) >= 1 && strlen(swizzle) <= 4);
+    SkASSERT(NULL != texture);
+    SkASSERT(strlen(swizzle) >= 1 && strlen(swizzle) <= 4);
 
     fParams = params;
     fTexture.reset(SkRef(texture));
@@ -54,8 +54,8 @@
                             const char* swizzle,
                             GrTextureParams::FilterMode filterMode,
                             SkShader::TileMode tileXAndY) {
-    GrAssert(NULL != texture);
-    GrAssert(strlen(swizzle) >= 1 && strlen(swizzle) <= 4);
+    SkASSERT(NULL != texture);
+    SkASSERT(strlen(swizzle) >= 1 && strlen(swizzle) <= 4);
 
     fParams.reset(tileXAndY, filterMode);
     fTexture.reset(SkRef(texture));
@@ -64,7 +64,7 @@
 
 void GrTextureAccess::reset(GrTexture* texture,
                             const GrTextureParams& params) {
-    GrAssert(NULL != texture);
+    SkASSERT(NULL != texture);
     fTexture.reset(SkRef(texture));
     fParams = params;
     memcpy(fSwizzle, "rgba", 5);
@@ -74,7 +74,7 @@
 void GrTextureAccess::reset(GrTexture* texture,
                             GrTextureParams::FilterMode filterMode,
                             SkShader::TileMode tileXAndY) {
-    GrAssert(NULL != texture);
+    SkASSERT(NULL != texture);
     fTexture.reset(SkRef(texture));
     fParams.reset(tileXAndY, filterMode);
     memcpy(fSwizzle, "rgba", 5);
