Fix printed gain map size in avifenc/avifgainmaputil when using a grid. (#3270)

Follow up of #3264
Fixes #3261
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4fe2234..68f62f5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,6 +20,9 @@
   files when SVT-AV1 is built with MSVC. See
   https://github.com/AOMediaCodec/libavif/issues/3255.
 * Link with -lm when NOT WIN32 AND NOT APPLE
+* Fix printed image size in avifgainmaputil when using --grid.
+* Fix printed gain map size in avifenc when converting a jpeg with a gain map
+  and using --grid.
 
 ## [1.4.2] - 2026-05-26
 
diff --git a/apps/shared/avifutil.c b/apps/shared/avifutil.c
index 9cc6ead..cd2f6dc 100644
--- a/apps/shared/avifutil.c
+++ b/apps/shared/avifutil.c
@@ -147,9 +147,15 @@
     printf(" * Gain map       : ");
     avifImage * gainMapImage = avif->gainMap ? avif->gainMap->image : NULL;
     if (gainMapImage != NULL) {
+        uint32_t gainMapWidth = gainMapImage->width;
+        uint32_t gainMapHeight = gainMapImage->height;
+        if (gridCols && gridRows) {
+            gainMapWidth *= gridCols;
+            gainMapHeight *= gridRows;
+        }
         printf("%ux%u pixels, %u bit, %s, %s Range, Matrix Coeffs. %u, Base Headroom %.2f (%s), Alternate Headroom %.2f (%s)\n",
-               gainMapImage->width,
-               gainMapImage->height,
+               gainMapWidth,
+               gainMapHeight,
                gainMapImage->depth,
                avifPixelFormatToString(gainMapImage->yuvFormat),
                (gainMapImage->yuvRange == AVIF_RANGE_FULL) ? "Full" : "Limited",
diff --git a/tests/test_cmd_avifgainmaputil.sh b/tests/test_cmd_avifgainmaputil.sh
index 30be221..e108d8a 100755
--- a/tests/test_cmd_avifgainmaputil.sh
+++ b/tests/test_cmd_avifgainmaputil.sh
@@ -48,7 +48,10 @@
   "${AVIFGAINMAPUTIL}" combine "${INPUT_JPEG_GAINMAP_SDR}" "${INPUT_AVIF_GAINMAP_HDR}" "${AVIF_OUTPUT}" \
       -q 50 --qgain-map 90 --ignore-profile
   "${AVIFGAINMAPUTIL}" combine "${INPUT_AVIF_GAINMAP_SDR}" "${INPUT_AVIF_HDR2020}" "${AVIF_OUTPUT}" \
-      -q 50 --downscaling 2 --yuv-gain-map 400 --grid 2x2
+      -q 50 --downscaling 2 --yuv-gain-map 400 --grid 2x2 > "${OUT_MSG}"
+  cat "${OUT_MSG}"
+  grep "Resolution     : 400x300$" "${OUT_MSG}"
+  grep "Gain map       : 200x150 pixels" "${OUT_MSG}"
 
   "${AVIFGAINMAPUTIL}" combine "${INPUT_AVIF_GAINMAP_HDR}" "${INPUT_AVIF_GAINMAP_SDR}" "${AVIF_OUTPUT}" \
       -q 90 --qgain-map 90
@@ -57,6 +60,7 @@
   "${ARE_IMAGES_EQUAL}" "${PNG_OUTPUT}" "${INPUT_JPEG_GAINMAP_SDR}" 0 40 1
   # Check that metadata is copied over.
   "${AVIFGAINMAPUTIL}" tonemap "${AVIF_OUTPUT}" "${AVIF_OUTPUT}" --headroom 0 > "${OUT_MSG}"
+  cat "${OUT_MSG}"
   grep "XMP Metadata   : Present" "${OUT_MSG}"
   grep "Exif Metadata  : Present" "${OUT_MSG}"