diff --git a/LottieSample/screenshots/Tests_Image 10.png b/LottieSample/screenshots/Tests_Image 10.png
index 4e07350..be8cc41 100644
--- a/LottieSample/screenshots/Tests_Image 10.png
+++ b/LottieSample/screenshots/Tests_Image 10.png
Binary files differ
diff --git a/LottieSample/screenshots/Tests_Image 100.png b/LottieSample/screenshots/Tests_Image 100.png
index aa134a5..151742e 100644
--- a/LottieSample/screenshots/Tests_Image 100.png
+++ b/LottieSample/screenshots/Tests_Image 100.png
Binary files differ
diff --git a/LottieSample/screenshots/Tests_Image 20.png b/LottieSample/screenshots/Tests_Image 20.png
index 2b1347f..503f8cf 100644
--- a/LottieSample/screenshots/Tests_Image 20.png
+++ b/LottieSample/screenshots/Tests_Image 20.png
Binary files differ
diff --git a/LottieSample/screenshots/Tests_Image 5.png b/LottieSample/screenshots/Tests_Image 5.png
index 20c678b..112fb6c 100644
--- a/LottieSample/screenshots/Tests_Image 5.png
+++ b/LottieSample/screenshots/Tests_Image 5.png
Binary files differ
diff --git a/LottieSample/screenshots/Tests_Image 50.png b/LottieSample/screenshots/Tests_Image 50.png
index ebfdefb..e1bb927 100644
--- a/LottieSample/screenshots/Tests_Image 50.png
+++ b/LottieSample/screenshots/Tests_Image 50.png
Binary files differ
diff --git a/lottie/src/main/java/com/airbnb/lottie/LayerView.java b/lottie/src/main/java/com/airbnb/lottie/LayerView.java
index e2b7c90..91aa0b8 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LayerView.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LayerView.java
@@ -28,6 +28,8 @@
   private final Paint mainCanvasPaint = new Paint();
   private final Paint mattePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
   private final Paint maskPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+  private final Paint imagePaint =
+      new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
 
   private final Layer layerModel;
   private final LottieComposition composition;
@@ -256,7 +258,7 @@
         LayerView layer = transformLayers.get(i);
         applyTransformForLayer(canvas, layer);
       }
-      drawBitmapIfNeeded(canvas);
+      drawImageIfNeeded(canvas);
       super.draw(canvas);
       canvas.restoreToCount(mainCanvasCount);
       return;
@@ -268,7 +270,7 @@
 
     // Now apply the parent transformations from the top down.
     bitmapCanvas.save();
-    drawBitmapIfNeeded(bitmapCanvas);
+    drawImageIfNeeded(bitmapCanvas);
     for (int i = transformLayers.size() - 1; i >= 0; i--) {
       LayerView layer = transformLayers.get(i);
       applyTransformForLayer(bitmapCanvas, layer);
@@ -319,19 +321,19 @@
     canvas.restore();
   }
 
-  private void drawBitmapIfNeeded(Canvas canvas) {
+  private void drawImageIfNeeded(Canvas canvas) {
     if (!composition.hasImages()) {
       return;
     }
     String refId = layerModel.getRefId();
-    Bitmap bitmap = getLottieDrawable().getImageBitmap(refId);
+    Bitmap bitmap = getLottieDrawable().getImageAsset(refId);
     if (bitmap == null) {
       return;
     }
 
     canvas.save();
     applyTransformForLayer(canvas, this);
-    canvas.drawBitmap(bitmap, 0, 0 ,null);
+    canvas.drawBitmap(bitmap, 0, 0 ,imagePaint);
     canvas.restore();
   }
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java b/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
index 6accba0..0fd9549 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
@@ -266,7 +266,7 @@
     return composition == null ? -1 : composition.getBounds().height();
   }
 
-  Bitmap getImageBitmap(String id) {
+  Bitmap getImageAsset(String id) {
     return getImageAssetBitmapManager().bitmapForId(id);
   }
 
