Merge "Manually set vector density when converting to bitmap." into main
diff --git a/core/java/android/view/PointerIcon.java b/core/java/android/view/PointerIcon.java
index 715f1be..13b9c45 100644
--- a/core/java/android/view/PointerIcon.java
+++ b/core/java/android/view/PointerIcon.java
@@ -430,6 +430,11 @@
             VectorDrawable vectorDrawable) {
         Bitmap bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(),
                 vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
+        // BitmapDrawables and Bitmap have a default density of DisplayMetrics.DENSITY_DEVICE,
+        // (which is deprecated in favor of DENSITY_DEVICE_STABLE/resources.densityDpi). In
+        // rare cases when device density differs from the resource density, the bitmap will
+        // scale as the BitmapDrawable is created. Avoid by explicitly setting density here.
+        bitmap.setDensity(resources.getDisplayMetrics().densityDpi);
         Canvas canvas = new Canvas(bitmap);
         vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
         vectorDrawable.draw(canvas);