Fix 1px rounding error

Flag: com.android.window.flags.multi_crop
Bug: 372570518
Test: atest WallpaperManagerTest
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:86b7e8d0eb8cc1ab1553718d7d4179f9ea5b9424)
Merged-In: Ic9b4a15aed5a49cb729b202e0a7915f0e3c40156
Change-Id: Ic9b4a15aed5a49cb729b202e0a7915f0e3c40156
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperCropper.java b/services/core/java/com/android/server/wallpaper/WallpaperCropper.java
index d5bea4a..2a7f705 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperCropper.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperCropper.java
@@ -746,8 +746,8 @@
                     final ImageDecoder.Source srcData =
                             ImageDecoder.createSource(wallpaper.getWallpaperFile());
                     final int finalScale = scale;
-                    final int rescaledBitmapWidth = (int) (0.5f + bitmapSize.x / sampleSize);
-                    final int rescaledBitmapHeight = (int) (0.5f + bitmapSize.y / sampleSize);
+                    final int rescaledBitmapWidth = (int) Math.ceil(bitmapSize.x / sampleSize);
+                    final int rescaledBitmapHeight = (int) Math.ceil(bitmapSize.y / sampleSize);
                     Bitmap cropped = ImageDecoder.decodeBitmap(srcData, (decoder, info, src) -> {
                         if (!multiCrop()) decoder.setTargetSampleSize(finalScale);
                         if (multiCrop()) {
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index 4754ffb..3c001f5 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -2315,8 +2315,8 @@
             SparseArray<Rect> relativeSuggestedCrops =
                     mWallpaperCropper.getRelativeCropHints(wallpaper);
             Point croppedBitmapSize = new Point(
-                    (int) (0.5f + wallpaper.cropHint.width() / wallpaper.mSampleSize),
-                    (int) (0.5f + wallpaper.cropHint.height() / wallpaper.mSampleSize));
+                    (int) Math.ceil(wallpaper.cropHint.width() / wallpaper.mSampleSize),
+                    (int) Math.ceil(wallpaper.cropHint.height() / wallpaper.mSampleSize));
             if (croppedBitmapSize.equals(0, 0)) {
                 // There is an ImageWallpaper, but there are no crop hints and the bitmap size is
                 // unknown (e.g. the default wallpaper). Return a special "null" value that will be