diff --git a/src/core/SkBitmap.cpp b/src/core/SkBitmap.cpp
index a042865..f164ca5 100644
--- a/src/core/SkBitmap.cpp
+++ b/src/core/SkBitmap.cpp
@@ -424,7 +424,7 @@
     }
 }
 
-SkGpuTexture* SkBitmap::getTexture() const {
+GrTexture* SkBitmap::getTexture() const {
     return fPixelRef ? fPixelRef->getTexture() : NULL;
 }
 
diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp
index 37d1f44..9f16b4a 100644
--- a/src/core/SkImageFilter.cpp
+++ b/src/core/SkImageFilter.cpp
@@ -105,7 +105,7 @@
     if (!SkImageFilterUtils::GetInputResultGPU(this->getInput(0), proxy, src, &input)) {
         return false;
     }
-    GrTexture* srcTexture = (GrTexture*) input.getTexture();
+    GrTexture* srcTexture = input.getTexture();
     SkRect rect;
     src.getBounds(&rect);
     GrContext* context = srcTexture->getContext();
diff --git a/src/effects/SkBicubicImageFilter.cpp b/src/effects/SkBicubicImageFilter.cpp
index daa5948..2d0a17a 100644
--- a/src/effects/SkBicubicImageFilter.cpp
+++ b/src/effects/SkBicubicImageFilter.cpp
@@ -346,7 +346,7 @@
     if (!SkImageFilterUtils::GetInputResultGPU(getInput(0), proxy, src, &srcBM)) {
         return false;
     }
-    GrTexture* srcTexture = (GrTexture*) srcBM.getTexture();
+    GrTexture* srcTexture = srcBM.getTexture();
     GrContext* context = srcTexture->getContext();
 
     SkRect dstRect = SkRect::MakeWH(srcBM.width() * fScale.fWidth,
diff --git a/src/effects/SkBlendImageFilter.cpp b/src/effects/SkBlendImageFilter.cpp
index 330e87d..4f61ed8 100644
--- a/src/effects/SkBlendImageFilter.cpp
+++ b/src/effects/SkBlendImageFilter.cpp
@@ -155,12 +155,12 @@
     if (!SkImageFilterUtils::GetInputResultGPU(getBackgroundInput(), proxy, src, &backgroundBM)) {
         return false;
     }
-    GrTexture* background = (GrTexture*) backgroundBM.getTexture();
+    GrTexture* background = backgroundBM.getTexture();
     SkBitmap foregroundBM;
     if (!SkImageFilterUtils::GetInputResultGPU(getForegroundInput(), proxy, src, &foregroundBM)) {
         return false;
     }
-    GrTexture* foreground = (GrTexture*) foregroundBM.getTexture();
+    GrTexture* foreground = foregroundBM.getTexture();
     GrContext* context = foreground->getContext();
 
     GrTextureDesc desc;
diff --git a/src/effects/SkBlurImageFilter.cpp b/src/effects/SkBlurImageFilter.cpp
index 7b68ea0..36d0afd 100644
--- a/src/effects/SkBlurImageFilter.cpp
+++ b/src/effects/SkBlurImageFilter.cpp
@@ -198,7 +198,7 @@
     if (!SkImageFilterUtils::GetInputResultGPU(getInput(0), proxy, src, &input)) {
         return false;
     }
-    GrTexture* source = (GrTexture*) input.getTexture();
+    GrTexture* source = input.getTexture();
     SkRect rect;
     src.getBounds(&rect);
     SkAutoTUnref<GrTexture> tex(source->getContext()->gaussianBlur(source, false, rect,
diff --git a/src/effects/SkDisplacementMapEffect.cpp b/src/effects/SkDisplacementMapEffect.cpp
index f81f32f..7c99c02 100644
--- a/src/effects/SkDisplacementMapEffect.cpp
+++ b/src/effects/SkDisplacementMapEffect.cpp
@@ -280,12 +280,12 @@
     if (!SkImageFilterUtils::GetInputResultGPU(getColorInput(), proxy, src, &colorBM)) {
         return false;
     }
-    GrTexture* color = (GrTexture*) colorBM.getTexture();
+    GrTexture* color = colorBM.getTexture();
     SkBitmap displacementBM;
     if (!SkImageFilterUtils::GetInputResultGPU(getDisplacementInput(), proxy, src, &displacementBM)) {
         return false;
     }
-    GrTexture* displacement = (GrTexture*) displacementBM.getTexture();
+    GrTexture* displacement = displacementBM.getTexture();
     GrContext* context = color->getContext();
 
     GrTextureDesc desc;
diff --git a/src/effects/SkMorphologyImageFilter.cpp b/src/effects/SkMorphologyImageFilter.cpp
index be63d15..cbee850 100644
--- a/src/effects/SkMorphologyImageFilter.cpp
+++ b/src/effects/SkMorphologyImageFilter.cpp
@@ -507,7 +507,7 @@
     if (!SkImageFilterUtils::GetInputResultGPU(getInput(0), proxy, src, &inputBM)) {
         return false;
     }
-    GrTexture* input = (GrTexture*) inputBM.getTexture();
+    GrTexture* input = inputBM.getTexture();
     SkIRect bounds;
     src.getBounds(&bounds);
     SkAutoTUnref<GrTexture> resultTex(apply_morphology(input, bounds,
@@ -520,7 +520,7 @@
     if (!SkImageFilterUtils::GetInputResultGPU(getInput(0), proxy, src, &inputBM)) {
         return false;
     }
-    GrTexture* input = (GrTexture*) inputBM.getTexture();
+    GrTexture* input = inputBM.getTexture();
     SkIRect bounds;
     src.getBounds(&bounds);
     SkAutoTUnref<GrTexture> resultTex(apply_morphology(input, bounds,
diff --git a/src/effects/SkXfermodeImageFilter.cpp b/src/effects/SkXfermodeImageFilter.cpp
index a7f50c3..c26ca18 100644
--- a/src/effects/SkXfermodeImageFilter.cpp
+++ b/src/effects/SkXfermodeImageFilter.cpp
@@ -70,12 +70,12 @@
     if (!SkImageFilterUtils::GetInputResultGPU(getInput(0), proxy, src, &background)) {
         return false;
     }
-    GrTexture* backgroundTex = (GrTexture*) background.getTexture();
+    GrTexture* backgroundTex = background.getTexture();
     SkBitmap foreground;
     if (!SkImageFilterUtils::GetInputResultGPU(getInput(1), proxy, src, &foreground)) {
         return false;
     }
-    GrTexture* foregroundTex = (GrTexture*) foreground.getTexture();
+    GrTexture* foregroundTex = foreground.getTexture();
     GrContext* context = foregroundTex->getContext();
 
     GrEffectRef* xferEffect = NULL;
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index 22f01f9..bfc3695 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -449,9 +449,9 @@
     DO_DEFERRED_CLEAR();
 }
 
-SkGpuRenderTarget* SkGpuDevice::accessRenderTarget() {
+GrRenderTarget* SkGpuDevice::accessRenderTarget() {
     DO_DEFERRED_CLEAR();
-    return (SkGpuRenderTarget*)fRenderTarget;
+    return fRenderTarget;
 }
 
 bool SkGpuDevice::bindDeviceAsTexture(GrPaint* paint) {
@@ -1494,8 +1494,8 @@
         SkBitmap filterBitmap;
         if (filter_texture(this, fContext, texture, filter, w, h, &filterBitmap)) {
             grPaint.colorStage(kBitmapEffectIdx)->setEffect(
-                GrSimpleTextureEffect::Create((GrTexture*) filterBitmap.getTexture(), SkMatrix::I()))->unref();
-            texture = (GrTexture*) filterBitmap.getTexture();
+                GrSimpleTextureEffect::Create(filterBitmap.getTexture(), SkMatrix::I()))->unref();
+            texture = filterBitmap.getTexture();
             w = filterBitmap.width();
             h = filterBitmap.height();
         }
@@ -1571,8 +1571,8 @@
         SkBitmap filterBitmap;
         if (filter_texture(this, fContext, devTex, filter, w, h, &filterBitmap)) {
             grPaint.colorStage(kBitmapEffectIdx)->setEffect(
-                GrSimpleTextureEffect::Create((GrTexture*) filterBitmap.getTexture(), SkMatrix::I()))->unref();
-            devTex = (GrTexture*) filterBitmap.getTexture();
+                GrSimpleTextureEffect::Create(filterBitmap.getTexture(), SkMatrix::I()))->unref();
+            devTex = filterBitmap.getTexture();
             w = filterBitmap.width();
             h = filterBitmap.height();
         }
diff --git a/src/gpu/SkGrPixelRef.cpp b/src/gpu/SkGrPixelRef.cpp
index 8751c5d..98819bf 100644
--- a/src/gpu/SkGrPixelRef.cpp
+++ b/src/gpu/SkGrPixelRef.cpp
@@ -128,9 +128,9 @@
     GrSafeUnref(fSurface);
 }
 
-SkGpuTexture* SkGrPixelRef::getTexture() {
+GrTexture* SkGrPixelRef::getTexture() {
     if (NULL != fSurface) {
-        return (SkGpuTexture*) fSurface->asTexture();
+        return fSurface->asTexture();
     }
     return NULL;
 }
diff --git a/src/image/SkSurface_Gpu.cpp b/src/image/SkSurface_Gpu.cpp
index 154f179..75c3890 100644
--- a/src/image/SkSurface_Gpu.cpp
+++ b/src/image/SkSurface_Gpu.cpp
@@ -66,14 +66,14 @@
 }
 
 SkSurface* SkSurface_Gpu::onNewSurface(const SkImage::Info& info) {
-    GrRenderTarget* rt = (GrRenderTarget*) fDevice->accessRenderTarget();
+    GrRenderTarget* rt = fDevice->accessRenderTarget();
     int sampleCount = rt->numSamples();
     return SkSurface::NewRenderTarget(fDevice->context(), info, sampleCount);
 }
 
 SkImage* SkSurface_Gpu::onNewImageSnapshot() {
 
-    GrRenderTarget* rt = (GrRenderTarget*) fDevice->accessRenderTarget();
+    GrRenderTarget* rt = fDevice->accessRenderTarget();
 
     return SkImage::NewTexture(rt->asTexture());
 }
@@ -87,7 +87,7 @@
 // device into it. Note that this flushes the SkGpuDevice but
 // doesn't force an OpenGL flush.
 void SkSurface_Gpu::onCopyOnWrite(ContentChangeMode mode) {
-    GrRenderTarget* rt = (GrRenderTarget*) fDevice->accessRenderTarget();
+    GrRenderTarget* rt = fDevice->accessRenderTarget();
     // are we sharing our render target with the image?
     SkASSERT(NULL != this->getCachedImage());
     if (rt->asTexture() == SkTextureImageGetTexture(this->getCachedImage())) {
diff --git a/src/utils/SkDeferredCanvas.cpp b/src/utils/SkDeferredCanvas.cpp
index 89997a1..da3c72e 100644
--- a/src/utils/SkDeferredCanvas.cpp
+++ b/src/utils/SkDeferredCanvas.cpp
@@ -163,7 +163,7 @@
     virtual uint32_t getDeviceCapabilities() SK_OVERRIDE;
     virtual int width() const SK_OVERRIDE;
     virtual int height() const SK_OVERRIDE;
-    virtual SkGpuRenderTarget* accessRenderTarget() SK_OVERRIDE;
+    virtual GrRenderTarget* accessRenderTarget() SK_OVERRIDE;
 
     virtual SkDevice* onCreateCompatibleDevice(SkBitmap::Config config,
                                                int width, int height,
@@ -435,7 +435,7 @@
     return immediateDevice()->height();
 }
 
-SkGpuRenderTarget* DeferredDevice::accessRenderTarget() {
+GrRenderTarget* DeferredDevice::accessRenderTarget() {
     this->flushPendingCommands(kNormal_PlaybackMode);
     return immediateDevice()->accessRenderTarget();
 }
