diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java
index 4ef1db7..a0c766c 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java
@@ -20,8 +20,8 @@
 
 public class ShapeLayer extends BaseLayer {
   private final Path path = new Path();
-  private final List<Path> paths = Collections.emptyList();
   private final ContentGroup contentGroup;
+  private List<Path> paths = Collections.emptyList();
 
   ShapeLayer(LottieDrawable lottieDrawable, Layer layerModel) {
     super(lottieDrawable, layerModel);
@@ -50,11 +50,19 @@
 
   @Override
   public List<Path> getPaths() {
-    List<Path> paths = new ArrayList<>(contentGroup.getPaths());
-    for (int i = 0; i < paths.size(); i++) {
-      paths.get(i).transform(getTransformMatrix());
+    List<Path> contentGroupPaths = contentGroup.getPaths();
+    if (paths.size() != contentGroupPaths.size()) {
+      paths = new ArrayList<>(contentGroupPaths.size());
+      for (int i = 0; i < contentGroupPaths.size(); i++) {
+        paths.add(new Path());
+      }
     }
-    return contentGroup.getPaths();
+    Matrix matrix = getTransformMatrix();
+    for (int i = 0; i < paths.size(); i++) {
+      contentGroupPaths.get(i).transform(matrix, paths.get(i));
+    }
+
+    return paths;
   }
 
   @Override
diff --git a/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java b/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java
index fb84cd4..dde5ad6 100644
--- a/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java
+++ b/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java
@@ -183,11 +183,9 @@
   }
 
   public static float dpScale() {
-//    if (dpScale == -1) {
-//      dpScale = Resources.getSystem().getDisplayMetrics().density;
-//    }
-//    return dpScale;
-    // DO MOT MERGE THIS
-    return 1f;
+    if (dpScale == -1) {
+      dpScale = Resources.getSystem().getDisplayMetrics().density;
+    }
+    return dpScale;
   }
 }
