diff --git a/samplecode/SampleTextureDomain.cpp b/samplecode/SampleTextureDomain.cpp
index 4debacc..be000f9 100755
--- a/samplecode/SampleTextureDomain.cpp
+++ b/samplecode/SampleTextureDomain.cpp
@@ -1,10 +1,11 @@
 #include "SampleCode.h"
 #include "SkCanvas.h"
+#include "SkDevice.h"
 
 namespace {
 SkBitmap make_bitmap() {
     SkBitmap bm;
-    bm.setConfig(SkBitmap::kARGB_8888_Config , 10, 10);
+    bm.setConfig(SkBitmap::kARGB_8888_Config , 5, 5);
     bm.allocPixels();
 
     for (int y = 0; y < bm.height(); y++) {
@@ -41,9 +42,32 @@
         SkRect dstRect;
         SkPaint paint;
         paint.setFilterBitmap(true);
-        srcRect.setXYWH(1, 1, 8, 8);
-        dstRect.setXYWH(10.0f, 10.0f, 810.0f, 810.0f);
+
+        // Test that bitmap draws from malloc-backed bitmaps respect
+        // the constrained texture domain.
+        srcRect.setXYWH(1, 1, 3, 3);
+        dstRect.setXYWH(5.0f, 5.0f, 305.0f, 305.0f);
         canvas->drawBitmapRect(fBM, &srcRect, dstRect, &paint);
+
+        // Test that bitmap draws across separate devices also respect
+        // the constrainted texture domain.
+        // Note:  GPU-backed bitmaps follow a different rendering path
+        // when copying from one GPU device to another.
+        SkRefPtr<SkDevice> primaryDevice(canvas->getDevice());
+        SkRefPtr<SkDevice> secondDevice(canvas->createDevice(
+                SkBitmap::kARGB_8888_Config, 5, 5, true, true));
+        secondDevice->unref();
+        SkCanvas secondCanvas(secondDevice.get());
+
+        srcRect.setXYWH(1, 1, 3, 3);
+        dstRect.setXYWH(1.0f, 1.0f, 3.0f, 3.0f);
+        secondCanvas.drawBitmapRect(fBM, &srcRect, dstRect, &paint);
+
+        SkBitmap deviceBitmap = secondDevice->accessBitmap(false);
+
+        srcRect.setXYWH(1, 1, 3, 3);
+        dstRect.setXYWH(405.0f, 5.0f, 305.0f, 305.0f);
+        canvas->drawBitmapRect(deviceBitmap, &srcRect, dstRect, &paint);
     }
 private:
     typedef SkView INHERITED;
