base: fix color_u64_argb_nonpremul for 64-bit
diff --git a/internal/cgen/base/image-public.h b/internal/cgen/base/image-public.h
index 579736c..e3ad540 100644
--- a/internal/cgen/base/image-public.h
+++ b/internal/cgen/base/image-public.h
@@ -258,16 +258,16 @@
 static inline uint64_t  //
 wuffs_base__color_u64_argb_nonpremul__as__color_u64_argb_premul(
     uint64_t argb_nonpremul) {
-  uint32_t a = 0xFFFF & (argb_nonpremul >> 48);
+  uint64_t a = 0xFFFF & (argb_nonpremul >> 48);
 
-  uint32_t r = 0xFFFF & (argb_nonpremul >> 32);
+  uint64_t r = 0xFFFF & (argb_nonpremul >> 32);
   r = (r * a) / 0xFFFF;
-  uint32_t g = 0xFFFF & (argb_nonpremul >> 16);
+  uint64_t g = 0xFFFF & (argb_nonpremul >> 16);
   g = (g * a) / 0xFFFF;
-  uint32_t b = 0xFFFF & (argb_nonpremul >> 0);
+  uint64_t b = 0xFFFF & (argb_nonpremul >> 0);
   b = (b * a) / 0xFFFF;
 
-  return (a << 24) | (r << 16) | (g << 8) | (b << 0);
+  return (a << 48) | (r << 32) | (g << 16) | (b << 0);
 }
 
 static inline uint8_t  //
diff --git a/internal/cgen/base/pixconv-submodule-regular.c b/internal/cgen/base/pixconv-submodule-regular.c
index 5ba01dc..a74fde6 100644
--- a/internal/cgen/base/pixconv-submodule-regular.c
+++ b/internal/cgen/base/pixconv-submodule-regular.c
@@ -349,7 +349,7 @@
           wuffs_base__color_u32_argb_premul__as__color_u8_gray(color |
                                                                0xFF000000));
       wuffs_base__poke_u8__no_bounds_check(row + (2 * ((size_t)x)) + 1,
-                                           color >> 24);
+                                           ((uint8_t)(color >> 24)));
       break;
 
     case WUFFS_BASE__PIXEL_FORMAT__INDEXED__BGRA_NONPREMUL:
@@ -509,7 +509,7 @@
                                                                        color);
       ptr[0] = wuffs_base__color_u32_argb_premul__as__color_u8_gray(dst |
                                                                     0xFF000000);
-      ptr[1] = dst >> 24;
+      ptr[1] = ((uint8_t)(dst >> 24));
       break;
     }
 
diff --git a/internal/cgen/base/pixconv-submodule-ycck.c b/internal/cgen/base/pixconv-submodule-ycck.c
index 9869a94..10a0eea 100644
--- a/internal/cgen/base/pixconv-submodule-ycck.c
+++ b/internal/cgen/base/pixconv-submodule-ycck.c
@@ -156,9 +156,9 @@
     color |= ((uint32_t)(*up3++)) << 24;
 
     uint8_t* ptr = row + (4 * ((size_t)x));
-    uint32_t dst =
+    uint32_t dst_color =
         wuffs_base__color_u32_argb_nonpremul__as__color_u32_argb_premul(color);
-    wuffs_base__poke_u32le__no_bounds_check(ptr, dst);
+    wuffs_base__poke_u32le__no_bounds_check(ptr, dst_color);
   }
 }
 
@@ -204,9 +204,10 @@
     color |= ((uint32_t)(*up3++)) << 24;
 
     uint8_t* ptr = row + (4 * ((size_t)x));
-    uint32_t dst = wuffs_base__peek_u32le__no_bounds_check(ptr);
-    dst = wuffs_private_impl__composite_premul_nonpremul_u32_axxx(dst, color);
-    wuffs_base__poke_u32le__no_bounds_check(ptr, dst);
+    uint32_t dst_color = wuffs_base__peek_u32le__no_bounds_check(ptr);
+    dst_color = wuffs_private_impl__composite_premul_nonpremul_u32_axxx(
+        dst_color, color);
+    wuffs_base__poke_u32le__no_bounds_check(ptr, dst_color);
   }
 }
 
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index cdc7207..6e9388d 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -4612,16 +4612,16 @@
 static inline uint64_t  //
 wuffs_base__color_u64_argb_nonpremul__as__color_u64_argb_premul(
     uint64_t argb_nonpremul) {
-  uint32_t a = 0xFFFF & (argb_nonpremul >> 48);
+  uint64_t a = 0xFFFF & (argb_nonpremul >> 48);
 
-  uint32_t r = 0xFFFF & (argb_nonpremul >> 32);
+  uint64_t r = 0xFFFF & (argb_nonpremul >> 32);
   r = (r * a) / 0xFFFF;
-  uint32_t g = 0xFFFF & (argb_nonpremul >> 16);
+  uint64_t g = 0xFFFF & (argb_nonpremul >> 16);
   g = (g * a) / 0xFFFF;
-  uint32_t b = 0xFFFF & (argb_nonpremul >> 0);
+  uint64_t b = 0xFFFF & (argb_nonpremul >> 0);
   b = (b * a) / 0xFFFF;
 
-  return (a << 24) | (r << 16) | (g << 8) | (b << 0);
+  return (a << 48) | (r << 32) | (g << 16) | (b << 0);
 }
 
 static inline uint8_t  //
@@ -24762,7 +24762,7 @@
           wuffs_base__color_u32_argb_premul__as__color_u8_gray(color |
                                                                0xFF000000));
       wuffs_base__poke_u8__no_bounds_check(row + (2 * ((size_t)x)) + 1,
-                                           color >> 24);
+                                           ((uint8_t)(color >> 24)));
       break;
 
     case WUFFS_BASE__PIXEL_FORMAT__INDEXED__BGRA_NONPREMUL:
@@ -24922,7 +24922,7 @@
                                                                        color);
       ptr[0] = wuffs_base__color_u32_argb_premul__as__color_u8_gray(dst |
                                                                     0xFF000000);
-      ptr[1] = dst >> 24;
+      ptr[1] = ((uint8_t)(dst >> 24));
       break;
     }
 
@@ -33004,9 +33004,9 @@
     color |= ((uint32_t)(*up3++)) << 24;
 
     uint8_t* ptr = row + (4 * ((size_t)x));
-    uint32_t dst =
+    uint32_t dst_color =
         wuffs_base__color_u32_argb_nonpremul__as__color_u32_argb_premul(color);
-    wuffs_base__poke_u32le__no_bounds_check(ptr, dst);
+    wuffs_base__poke_u32le__no_bounds_check(ptr, dst_color);
   }
 }
 
@@ -33052,9 +33052,10 @@
     color |= ((uint32_t)(*up3++)) << 24;
 
     uint8_t* ptr = row + (4 * ((size_t)x));
-    uint32_t dst = wuffs_base__peek_u32le__no_bounds_check(ptr);
-    dst = wuffs_private_impl__composite_premul_nonpremul_u32_axxx(dst, color);
-    wuffs_base__poke_u32le__no_bounds_check(ptr, dst);
+    uint32_t dst_color = wuffs_base__peek_u32le__no_bounds_check(ptr);
+    dst_color = wuffs_private_impl__composite_premul_nonpremul_u32_axxx(
+        dst_color, color);
+    wuffs_base__poke_u32le__no_bounds_check(ptr, dst_color);
   }
 }