diff --git a/gm/bitmapcopy.cpp b/gm/bitmapcopy.cpp
index 5e88cfd..1c56bde 100644
--- a/gm/bitmapcopy.cpp
+++ b/gm/bitmapcopy.cpp
@@ -66,7 +66,7 @@
         SkScalar horizMargin(SkIntToScalar(10));
         SkScalar vertMargin(SkIntToScalar(10));
 
-        SkBitmapDevice devTmp(SkBitmap::kARGB_8888_Config, 40, 40, false);
+        SkDevice devTmp(SkBitmap::kARGB_8888_Config, 40, 40);
         SkCanvas canvasTmp(&devTmp);
 
         draw_checks(&canvasTmp, 40, 40);
diff --git a/gm/deviceproperties.cpp b/gm/deviceproperties.cpp
index 8bca4b7..5739b57 100644
--- a/gm/deviceproperties.cpp
+++ b/gm/deviceproperties.cpp
@@ -44,7 +44,7 @@
             SkDeviceProperties::Geometry::Make(SkDeviceProperties::Geometry::kVertical_Orientation,
                                                SkDeviceProperties::Geometry::kBGR_Layout),
             SK_Scalar1);
-        SkBitmapDevice device(bitmap, properties);
+        SkDevice device(bitmap, properties);
         SkCanvas canvas(&device);
         canvas.drawColor(SK_ColorWHITE);
 
diff --git a/gm/displacement.cpp b/gm/displacement.cpp
index 5031720..888051d 100644
--- a/gm/displacement.cpp
+++ b/gm/displacement.cpp
@@ -25,7 +25,7 @@
     void make_bitmap() {
         fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 80, 80);
         fBitmap.allocPixels();
-        SkBitmapDevice device(fBitmap);
+        SkDevice device(fBitmap);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
         SkPaint paint;
@@ -39,7 +39,7 @@
     void make_checkerboard() {
         fCheckerboard.setConfig(SkBitmap::kARGB_8888_Config, 80, 80);
         fCheckerboard.allocPixels();
-        SkBitmapDevice device(fCheckerboard);
+        SkDevice device(fCheckerboard);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
         SkPaint darkPaint;
diff --git a/gm/extractbitmap.cpp b/gm/extractbitmap.cpp
index 5206741..59f8a93 100644
--- a/gm/extractbitmap.cpp
+++ b/gm/extractbitmap.cpp
@@ -74,7 +74,7 @@
         }
 
         // Now do the same but with a device bitmap as source image
-        SkAutoTUnref<SkBaseDevice> secondDevice(canvas->createCompatibleDevice(
+        SkAutoTUnref<SkDevice> secondDevice(canvas->createCompatibleDevice(
             SkBitmap::kARGB_8888_Config, bitmap.width(),
             bitmap.height(), true));
         SkCanvas secondCanvas(secondDevice.get());
diff --git a/gm/gmmain.cpp b/gm/gmmain.cpp
index 09dd96e..773e1e7 100644
--- a/gm/gmmain.cpp
+++ b/gm/gmmain.cpp
@@ -517,7 +517,7 @@
         SkAutoTUnref<SkCanvas> canvas;
 
         if (gRec.fBackend == kRaster_Backend) {
-            SkAutoTUnref<SkBaseDevice> device(SkNEW_ARGS(SkBitmapDevice, (*bitmap)));
+            SkAutoTUnref<SkDevice> device(SkNEW_ARGS(SkDevice, (*bitmap)));
             if (deferred) {
                 canvas.reset(SkDeferredCanvas::Create(device));
             } else {
@@ -528,7 +528,7 @@
         }
 #if SK_SUPPORT_GPU
         else {  // GPU
-            SkAutoTUnref<SkBaseDevice> device(SkGpuDevice::Create(gpuTarget));
+            SkAutoTUnref<SkDevice> device(SkGpuDevice::Create(gpuTarget));
             if (deferred) {
                 canvas.reset(SkDeferredCanvas::Create(device));
             } else {
diff --git a/gm/imagefiltersgraph.cpp b/gm/imagefiltersgraph.cpp
index 363a414..38df075 100644
--- a/gm/imagefiltersgraph.cpp
+++ b/gm/imagefiltersgraph.cpp
@@ -32,7 +32,7 @@
     void make_bitmap() {
         fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 100, 100);
         fBitmap.allocPixels();
-        SkBitmapDevice device(fBitmap);
+        SkDevice device(fBitmap);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
         SkPaint paint;
diff --git a/gm/lighting.cpp b/gm/lighting.cpp
index a89a7f1..f16e781 100644
--- a/gm/lighting.cpp
+++ b/gm/lighting.cpp
@@ -27,7 +27,7 @@
     void make_bitmap() {
         fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 100, 100);
         fBitmap.allocPixels();
-        SkBitmapDevice device(fBitmap);
+        SkDevice device(fBitmap);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
         SkPaint paint;
diff --git a/gm/matrixconvolution.cpp b/gm/matrixconvolution.cpp
index 853b57b..59bd380 100644
--- a/gm/matrixconvolution.cpp
+++ b/gm/matrixconvolution.cpp
@@ -26,7 +26,7 @@
     void make_bitmap() {
         fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 80, 80);
         fBitmap.allocPixels();
-        SkBitmapDevice device(fBitmap);
+        SkDevice device(fBitmap);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
         SkPaint paint;
diff --git a/gm/morphology.cpp b/gm/morphology.cpp
index 2d29fcd..83de758 100644
--- a/gm/morphology.cpp
+++ b/gm/morphology.cpp
@@ -28,7 +28,7 @@
     void make_bitmap() {
         fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 135, 135);
         fBitmap.allocPixels();
-        SkBitmapDevice device(fBitmap);
+        SkDevice device(fBitmap);
         SkCanvas canvas(&device);
         canvas.clear(0x0);
         SkPaint paint;
diff --git a/gm/ninepatchstretch.cpp b/gm/ninepatchstretch.cpp
index 551f020..c4c5291 100644
--- a/gm/ninepatchstretch.cpp
+++ b/gm/ninepatchstretch.cpp
@@ -14,7 +14,7 @@
 #endif
 
 static void make_bitmap(SkBitmap* bitmap, GrContext* ctx, SkIRect* center) {
-    SkBaseDevice* dev;
+    SkDevice* dev;
 
     const int kFixed = 28;
     const int kStretchy = 8;
@@ -29,7 +29,7 @@
     {
         bitmap->setConfig(SkBitmap::kARGB_8888_Config, kSize, kSize);
         bitmap->allocPixels();
-        dev = new SkBitmapDevice(*bitmap);
+        dev = new SkDevice(*bitmap);
     }
 
     SkCanvas canvas(dev);
diff --git a/gm/srcmode.cpp b/gm/srcmode.cpp
index e8a97e2..66729e2 100644
--- a/gm/srcmode.cpp
+++ b/gm/srcmode.cpp
@@ -124,7 +124,7 @@
             SkImage::kPremul_AlphaType
         };
 #if SK_SUPPORT_GPU
-        SkBaseDevice* dev = canvas->getDevice();
+        SkDevice* dev = canvas->getDevice();
         if (!skipGPU && dev->accessRenderTarget()) {
             SkGpuDevice* gd = (SkGpuDevice*)dev;
             GrContext* ctx = gd->context();
diff --git a/gm/texdata.cpp b/gm/texdata.cpp
index 0e2d7fd..612cc64 100644
--- a/gm/texdata.cpp
+++ b/gm/texdata.cpp
@@ -38,7 +38,7 @@
     }
 
     virtual void onDraw(SkCanvas* canvas) {
-        SkBaseDevice* device = canvas->getTopDevice();
+        SkDevice* device = canvas->getTopDevice();
         GrRenderTarget* target = device->accessRenderTarget();
         GrContext* ctx = GetGr();
         if (ctx && target) {
diff --git a/gm/xfermodeimagefilter.cpp b/gm/xfermodeimagefilter.cpp
index 94d60e4..86225af 100644
--- a/gm/xfermodeimagefilter.cpp
+++ b/gm/xfermodeimagefilter.cpp
@@ -31,7 +31,7 @@
     void make_bitmap() {
         fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 80, 80);
         fBitmap.allocPixels();
-        SkBitmapDevice device(fBitmap);
+        SkDevice device(fBitmap);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
         SkPaint paint;
@@ -45,7 +45,7 @@
     void make_checkerboard() {
         fCheckerboard.setConfig(SkBitmap::kARGB_8888_Config, 80, 80);
         fCheckerboard.allocPixels();
-        SkBitmapDevice device(fCheckerboard);
+        SkDevice device(fCheckerboard);
         SkCanvas canvas(&device);
         canvas.clear(0x00000000);
         SkPaint darkPaint;
diff --git a/gm/xfermodes3.cpp b/gm/xfermodes3.cpp
index baac3cd..f1eff1f 100644
--- a/gm/xfermodes3.cpp
+++ b/gm/xfermodes3.cpp
@@ -132,7 +132,7 @@
             desc.fConfig = rt->config();
             desc.fFlags = kRenderTarget_GrTextureFlagBit;
             SkAutoTUnref<GrSurface> surface(context->createUncachedTexture(desc, NULL, 0));
-            SkAutoTUnref<SkBaseDevice> device(SkGpuDevice::Create(surface.get()));
+            SkAutoTUnref<SkDevice> device(SkGpuDevice::Create(surface.get()));
             if (NULL != device.get()) {
                 tempCanvas = SkNEW_ARGS(SkCanvas, (device.get()));
             }
