Refine pixel_format.bits_per_pixel return type
diff --git a/lang/builtin/builtin.go b/lang/builtin/builtin.go
index 3b7b0fa..98f34da 100644
--- a/lang/builtin/builtin.go
+++ b/lang/builtin/builtin.go
@@ -344,7 +344,7 @@
 
 	// ---- pixel_format
 
-	"pixel_format.bits_per_pixel() u32",
+	"pixel_format.bits_per_pixel() u32[..= 256]",
 
 	// ---- pixel_swizzler
 
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index b71a7b6..86495e7 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -8283,7 +8283,7 @@
   v_dst_pixfmt = wuffs_base__pixel_buffer__pixel_format(a_dst);
   v_dst_bits_per_pixel =
       wuffs_base__pixel_format__bits_per_pixel(&v_dst_pixfmt);
-  if ((v_dst_bits_per_pixel > 512) || ((v_dst_bits_per_pixel & 7) != 0)) {
+  if ((v_dst_bits_per_pixel & 7) != 0) {
     return wuffs_base__make_status(wuffs_base__error__unsupported_option);
   }
   v_dst_bytes_per_pixel = ((uint64_t)((v_dst_bits_per_pixel / 8)));
@@ -16774,7 +16774,7 @@
 
   v_pixfmt = wuffs_base__pixel_buffer__pixel_format(a_pb);
   v_bits_per_pixel = wuffs_base__pixel_format__bits_per_pixel(&v_pixfmt);
-  if ((v_bits_per_pixel > 512) || ((v_bits_per_pixel & 7) != 0)) {
+  if ((v_bits_per_pixel & 7) != 0) {
     return wuffs_base__make_status(wuffs_base__error__unsupported_option);
   }
   v_bytes_per_pixel = (v_bits_per_pixel >> 3);
diff --git a/std/bmp/decode_bmp.wuffs b/std/bmp/decode_bmp.wuffs
index 49b9c40..96f0ad5 100644
--- a/std/bmp/decode_bmp.wuffs
+++ b/std/bmp/decode_bmp.wuffs
@@ -252,8 +252,8 @@
 
 pri func decoder.swizzle!(dst: ptr base.pixel_buffer, src: slice base.u8) base.status {
 	var dst_pixfmt          : base.pixel_format
-	var dst_bits_per_pixel  : base.u32
-	var dst_bytes_per_pixel : base.u64[..= 64]
+	var dst_bits_per_pixel  : base.u32[..= 256]
+	var dst_bytes_per_pixel : base.u64[..= 32]
 	var dst_bytes_per_row   : base.u64
 	var src_bytes_per_pixel : base.u8[..= 4]
 	var tab                 : table base.u8
@@ -265,7 +265,7 @@
 	// to chain the two calls: "args.dst.pixel_format().bits_per_pixel()".
 	dst_pixfmt = args.dst.pixel_format()
 	dst_bits_per_pixel = dst_pixfmt.bits_per_pixel()
-	if (dst_bits_per_pixel > 512) or ((dst_bits_per_pixel & 7) <> 0) {
+	if (dst_bits_per_pixel & 7) <> 0 {
 		return base."#unsupported option"
 	}
 	dst_bytes_per_pixel = (dst_bits_per_pixel / 8) as base.u64
diff --git a/std/gif/decode_gif.wuffs b/std/gif/decode_gif.wuffs
index 75e50d9..69fba95 100644
--- a/std/gif/decode_gif.wuffs
+++ b/std/gif/decode_gif.wuffs
@@ -1013,8 +1013,8 @@
 	var n               : base.u64
 	var src_ri          : base.u64
 	var pixfmt          : base.pixel_format
-	var bytes_per_pixel : base.u32[..= 64]
-	var bits_per_pixel  : base.u32
+	var bytes_per_pixel : base.u32[..= 32]
+	var bits_per_pixel  : base.u32[..= 256]
 	var tab             : table base.u8
 	var i               : base.u64
 	var j               : base.u64
@@ -1027,7 +1027,7 @@
 	// chain the two calls: "args.pb.pixel_format().bits_per_pixel()".
 	pixfmt = args.pb.pixel_format()
 	bits_per_pixel = pixfmt.bits_per_pixel()
-	if (bits_per_pixel > 512) or ((bits_per_pixel & 7) <> 0) {
+	if (bits_per_pixel & 7) <> 0 {
 		return base."#unsupported option"
 	}
 	bytes_per_pixel = bits_per_pixel >> 3