diff --git a/README.md b/README.md
index 7243279..0c77a86 100644
--- a/README.md
+++ b/README.md
@@ -111,6 +111,11 @@
     SubsamplingScaleImageView imageView = (SubsamplingScaleImageView)findViewById(id.imageView);
     imageView.setImage(ImageSource.bitmap(bitmap));
 
+## Photo credits
+
+* San Martino by Luca Bravo, via [unsplash.com](https://unsplash.com/photos/lWAOc0UuJ-A)
+* Swiss Road by Ludovic Fremondiere, via [unsplash.com](https://unsplash.com/photos/3XN-BNRDUyY)
+
 ## About
 
-Copyright 2016 David Morrissey, and licensed under the Apache License, Version 2.0. No attribution is necessary but it's very much appreciated. Star this project if you like it!
+Copyright 2017 David Morrissey, and licensed under the Apache License, Version 2.0. No attribution is necessary but it's very much appreciated. Star this project if you like it!
diff --git a/sample/assets/card.png b/sample/assets/card.png
index e89768e..20f330b 100644
--- a/sample/assets/card.png
+++ b/sample/assets/card.png
Binary files differ
diff --git a/sample/assets/eagle.jpg b/sample/assets/eagle.jpg
deleted file mode 100755
index c8a80b4..0000000
--- a/sample/assets/eagle.jpg
+++ /dev/null
Binary files differ
diff --git a/sample/assets/pony.jpg b/sample/assets/pony.jpg
deleted file mode 100755
index cc11873..0000000
--- a/sample/assets/pony.jpg
+++ /dev/null
Binary files differ
diff --git a/sample/assets/sanmartino.jpg b/sample/assets/sanmartino.jpg
new file mode 100644
index 0000000..faf7a51
--- /dev/null
+++ b/sample/assets/sanmartino.jpg
Binary files differ
diff --git a/sample/assets/squirrel.jpg b/sample/assets/squirrel.jpg
deleted file mode 100644
index a8f03bb..0000000
--- a/sample/assets/squirrel.jpg
+++ /dev/null
Binary files differ
diff --git a/sample/assets/swissroad.jpg b/sample/assets/swissroad.jpg
new file mode 100644
index 0000000..3a32151
--- /dev/null
+++ b/sample/assets/swissroad.jpg
Binary files differ
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/animation/AnimationActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/animation/AnimationActivity.java
index d556db1..4166698 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/animation/AnimationActivity.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/animation/AnimationActivity.java
@@ -39,7 +39,7 @@
             @Override public void onClick(View v) { AnimationActivity.this.play(); }
         });
         view = findViewById(id.imageView);
-        view.setImage(ImageSource.asset("squirrel.jpg"));
+        view.setImage(ImageSource.asset("sanmartino.jpg"));
     }
 
     @Override
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/basicfeatures/BasicFeaturesActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/basicfeatures/BasicFeaturesActivity.java
index e5357aa..ad8b600 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/basicfeatures/BasicFeaturesActivity.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/basicfeatures/BasicFeaturesActivity.java
@@ -30,7 +30,7 @@
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         SubsamplingScaleImageView view = findViewById(id.imageView);
-        view.setImage(ImageSource.asset("pony.jpg"));
+        view.setImage(ImageSource.asset("sanmartino.jpg"));
     }
 
 }
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/configuration/ConfigurationActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/configuration/ConfigurationActivity.java
index a3db049..2296581 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/configuration/ConfigurationActivity.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/configuration/ConfigurationActivity.java
@@ -38,7 +38,7 @@
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         view = findViewById(id.imageView);
-        view.setImage(ImageSource.asset("eagle.jpg"));
+        view.setImage(ImageSource.asset("card.png"));
     }
 
     @Override
@@ -51,7 +51,7 @@
         if (page == 1) {
             view.setMinimumTileDpi(50);
         } else {
-            view.setMinimumTileDpi(500);
+            view.setMinimumTileDpi(320);
         }
         if (page == 4) {
             view.setDoubleTapZoomStyle(SubsamplingScaleImageView.ZOOM_FOCUS_CENTER);
@@ -78,13 +78,13 @@
             view.setDebug(false);
         }
         if (page == 2) {
-            view.setScaleAndCenter(0f, new PointF(2456, 1632));
+            view.setScaleAndCenter(0f, new PointF(3900, 3120));
             view.setPanEnabled(false);
         } else {
             view.setPanEnabled(true);
         }
         if (page == 3) {
-            view.setScaleAndCenter(1f, new PointF(2456, 1632));
+            view.setScaleAndCenter(1f, new PointF(3900, 3120));
             view.setZoomEnabled(false);
         } else {
             view.setZoomEnabled(true);
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/eventhandling/EventHandlingActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/eventhandling/EventHandlingActivity.java
index 38f508d..5ce7b86 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/eventhandling/EventHandlingActivity.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/eventhandling/EventHandlingActivity.java
@@ -29,7 +29,7 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         SubsamplingScaleImageView imageView = findViewById(id.imageView);
-        imageView.setImage(ImageSource.asset("pony.jpg"));
+        imageView.setImage(ImageSource.asset("sanmartino.jpg"));
         imageView.setOnClickListener(new View.OnClickListener() {
             @Override public void onClick(View v) { Toast.makeText(v.getContext(), "Clicked", Toast.LENGTH_SHORT).show(); }
         });
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/eventhandlingadvanced/AdvancedEventHandlingActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/eventhandlingadvanced/AdvancedEventHandlingActivity.java
index a599379..9e0326a 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/eventhandlingadvanced/AdvancedEventHandlingActivity.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/eventhandlingadvanced/AdvancedEventHandlingActivity.java
@@ -66,7 +66,7 @@
             }
         });
 
-        imageView.setImage(ImageSource.asset("squirrel.jpg"));
+        imageView.setImage(ImageSource.asset("sanmartino.jpg"));
         imageView.setOnTouchListener(new View.OnTouchListener() {
             @Override
             public boolean onTouch(View view, MotionEvent motionEvent) {
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionCircleFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionCircleFragment.java
index fcb6687..cb79bbe 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionCircleFragment.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionCircleFragment.java
@@ -23,7 +23,7 @@
             @Override public void onClick(View v) { ((ExtensionActivity) ExtensionCircleFragment.this.getActivity()).previous(); }
         });
         SubsamplingScaleImageView imageView = rootView.findViewById(id.imageView);
-        imageView.setImage(ImageSource.asset("squirrel.jpg"));
+        imageView.setImage(ImageSource.asset("sanmartino.jpg"));
         return rootView;
     }
 
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionFreehandFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionFreehandFragment.java
index 35fbadf..73f35b1 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionFreehandFragment.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionFreehandFragment.java
@@ -20,7 +20,7 @@
             @Override public void onClick(View v) { ((ExtensionActivity) ExtensionFreehandFragment.this.getActivity()).previous(); }
         });
         final FreehandView imageView = rootView.findViewById(id.imageView);
-        imageView.setImage(ImageSource.asset("squirrel.jpg"));
+        imageView.setImage(ImageSource.asset("sanmartino.jpg"));
         rootView.findViewById(id.reset).setOnClickListener(new View.OnClickListener() {
             @Override public void onClick(View v) { imageView.reset(); }
         });
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionPinFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionPinFragment.java
index 5d624c2..600b461 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionPinFragment.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionPinFragment.java
@@ -21,8 +21,8 @@
             @Override public void onClick(View v) { ((ExtensionActivity) ExtensionPinFragment.this.getActivity()).next(); }
         });
         PinView imageView = rootView.findViewById(id.imageView);
-        imageView.setImage(ImageSource.asset("squirrel.jpg"));
-        imageView.setPin(new PointF(1718f, 581f));
+        imageView.setImage(ImageSource.asset("sanmartino.jpg"));
+        imageView.setPin(new PointF(1602f, 405f));
         return rootView;
     }
 
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRegionFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRegionFragment.java
index a85a1e6..d360d67 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRegionFragment.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRegionFragment.java
@@ -1,5 +1,6 @@
 package com.davemorrissey.labs.subscaleview.test.imagedisplay;
 
+import android.graphics.Bitmap;
 import android.graphics.Rect;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
@@ -9,6 +10,11 @@
 
 import com.davemorrissey.labs.subscaleview.ImageSource;
 import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+import com.davemorrissey.labs.subscaleview.decoder.CompatDecoderFactory;
+import com.davemorrissey.labs.subscaleview.decoder.ImageDecoder;
+import com.davemorrissey.labs.subscaleview.decoder.ImageRegionDecoder;
+import com.davemorrissey.labs.subscaleview.decoder.SkiaImageDecoder;
+import com.davemorrissey.labs.subscaleview.decoder.SkiaImageRegionDecoder;
 import com.davemorrissey.labs.subscaleview.test.R.id;
 import com.davemorrissey.labs.subscaleview.test.R.layout;
 
@@ -18,8 +24,10 @@
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View rootView = inflater.inflate(layout.imagedisplay_region_fragment, container, false);
         final SubsamplingScaleImageView imageView = rootView.findViewById(id.imageView);
+        imageView.setBitmapDecoderFactory(new CompatDecoderFactory<ImageDecoder>(SkiaImageDecoder.class, Bitmap.Config.ARGB_8888));
+        imageView.setRegionDecoderFactory(new CompatDecoderFactory<ImageRegionDecoder>(SkiaImageRegionDecoder.class, Bitmap.Config.ARGB_8888));
         imageView.setOrientation(SubsamplingScaleImageView.ORIENTATION_90);
-        imageView.setImage(ImageSource.asset("card.png").region(new Rect(0, 0, 3778, 2834)));
+        imageView.setImage(ImageSource.asset("card.png").region(new Rect(5200, 651, 8200, 3250)));
         rootView.findViewById(id.previous).setOnClickListener(new View.OnClickListener() {
             @Override public void onClick(View v) { ((ImageDisplayActivity) ImageDisplayRegionFragment.this.getActivity()).previous(); }
         });
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRotateFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRotateFragment.java
index eda4721..e3a2584 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRotateFragment.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRotateFragment.java
@@ -17,7 +17,7 @@
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View rootView = inflater.inflate(layout.imagedisplay_rotate_fragment, container, false);
         final SubsamplingScaleImageView imageView = rootView.findViewById(id.imageView);
-        imageView.setImage(ImageSource.asset("eagle.jpg"));
+        imageView.setImage(ImageSource.asset("swissroad.jpg"));
         imageView.setOrientation(90);
         rootView.findViewById(id.previous).setOnClickListener(new View.OnClickListener() {
             @Override public void onClick(View v) { ((ImageDisplayActivity) ImageDisplayRotateFragment.this.getActivity()).previous(); }
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/viewpager/ViewPagerActivity.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/viewpager/ViewPagerActivity.java
index 892847d..3f9a79d 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/viewpager/ViewPagerActivity.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/viewpager/ViewPagerActivity.java
@@ -22,7 +22,7 @@
 
 public class ViewPagerActivity extends AbstractPagesActivity {
 
-    private static final String[] IMAGES = { "eagle.jpg", "pony.jpg" };
+    private static final String[] IMAGES = { "sanmartino.jpg", "swissroad.jpg" };
 
     public ViewPagerActivity() {
         super(pager_title, view_pager, Arrays.asList(
diff --git a/sample/src/main/res/values/strings.xml b/sample/src/main/res/values/strings.xml
index 1f96d54..4908cac 100644
--- a/sample/src/main/res/values/strings.xml
+++ b/sample/src/main/res/values/strings.xml
@@ -37,7 +37,7 @@
     <string name="display.title">Image display</string>
     <string name="display.p1.subtitle">Large images</string>
     <string name="display.p1.text">
-        This image is 7,557 x 5,669 pixels. On most devices it will be subsampled, and higher quality tiles are loaded as you zoom in.
+        This image is 7,800 x 6,240 pixels. On most devices it will be subsampled, and higher quality tiles are loaded as you zoom in.
     </string>
     <string name="display.p2.subtitle">Rotation</string>
     <string name="display.p2.text">
