diff --git a/src/core/SkBitmap.cpp b/src/core/SkBitmap.cpp
index 7239517..2a8c8e4 100644
--- a/src/core/SkBitmap.cpp
+++ b/src/core/SkBitmap.cpp
@@ -946,7 +946,7 @@
 
     if (fPixelRef->getTexture() != NULL) {
         // Do a deep copy
-        SkPixelRef* pixelRef = fPixelRef->deepCopy(this->config(), &subset);
+        SkPixelRef* pixelRef = fPixelRef->deepCopy(&subset);
         if (pixelRef != NULL) {
             SkBitmap dst;
             dst.setConfig(this->config(), subset.width(), subset.height(), 0,
@@ -1145,8 +1145,7 @@
 }
 
 bool SkBitmap::deepCopyTo(SkBitmap* dst) const {
-    const SkBitmap::Config dstConfig = this->config();
-    const SkColorType dstCT = SkBitmapConfigToColorType(dstConfig);
+    const SkColorType dstCT = this->colorType();
 
     if (!this->canCopyTo(dstCT)) {
         return false;
@@ -1155,24 +1154,15 @@
     // If we have a PixelRef, and it supports deep copy, use it.
     // Currently supported only by texture-backed bitmaps.
     if (fPixelRef) {
-        SkPixelRef* pixelRef = fPixelRef->deepCopy(dstConfig);
+        SkPixelRef* pixelRef = fPixelRef->deepCopy();
         if (pixelRef) {
-            uint32_t rowBytes;
-            if (this->colorType() == dstCT) {
-                // Since there is no subset to pass to deepCopy, and deepCopy
-                // succeeded, the new pixel ref must be identical.
-                SkASSERT(fPixelRef->info() == pixelRef->info());
-                pixelRef->cloneGenID(*fPixelRef);
-                // Use the same rowBytes as the original.
-                rowBytes = fRowBytes;
-            } else {
-                // With the new config, an appropriate fRowBytes will be computed by setConfig.
-                rowBytes = 0;
-            }
+            // Since there is no subset to pass to deepCopy, and deepCopy
+            // succeeded, the new pixel ref must be identical.
+            SkASSERT(fPixelRef->info() == pixelRef->info());
+            pixelRef->cloneGenID(*fPixelRef);
 
             SkImageInfo info = fInfo;
-            info.fColorType = dstCT;
-            if (!dst->setConfig(info, rowBytes)) {
+            if (!dst->setConfig(info, fRowBytes)) {
                 return false;
             }
             dst->setPixelRef(pixelRef, fPixelRefOrigin)->unref();
