Fix some -Werror=conversion false positives
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index 550137a..f2e3edd 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -19675,7 +19675,7 @@
                 v_p0 += 1;
               }
             } else {
-              v_indexes[0] = (v_code >> 4);
+              v_indexes[0] = ((uint8_t)((v_code >> 4)));
               v_indexes[1] = (v_code & 15);
               v_p0 = 0;
               while (v_p0 < self->private_impl.f_rle_length) {
@@ -32012,7 +32012,7 @@
     v_fa = 0;
     v_i = v_i_start;
     while (v_i < ((uint64_t)(a_curr.len))) {
-      a_curr.ptr[v_i] += v_fa;
+      a_curr.ptr[v_i] = ((uint8_t)(a_curr.ptr[v_i] + v_fa));
       v_fa = a_curr.ptr[v_i];
       v_i += v_filter_distance;
     }
@@ -32038,29 +32038,29 @@
     v_c.len = 3;
     uint8_t* i_end0_c = v_c.ptr + (((i_slice_c.len - (size_t)(v_c.ptr - i_slice_c.ptr)) / 6) * 6);
     while (v_c.ptr < i_end0_c) {
-      v_fa0 += v_c.ptr[0];
+      v_fa0 = ((uint8_t)(v_fa0 + v_c.ptr[0]));
       v_c.ptr[0] = v_fa0;
-      v_fa1 += v_c.ptr[1];
+      v_fa1 = ((uint8_t)(v_fa1 + v_c.ptr[1]));
       v_c.ptr[1] = v_fa1;
-      v_fa2 += v_c.ptr[2];
+      v_fa2 = ((uint8_t)(v_fa2 + v_c.ptr[2]));
       v_c.ptr[2] = v_fa2;
       v_c.ptr += 3;
-      v_fa0 += v_c.ptr[0];
+      v_fa0 = ((uint8_t)(v_fa0 + v_c.ptr[0]));
       v_c.ptr[0] = v_fa0;
-      v_fa1 += v_c.ptr[1];
+      v_fa1 = ((uint8_t)(v_fa1 + v_c.ptr[1]));
       v_c.ptr[1] = v_fa1;
-      v_fa2 += v_c.ptr[2];
+      v_fa2 = ((uint8_t)(v_fa2 + v_c.ptr[2]));
       v_c.ptr[2] = v_fa2;
       v_c.ptr += 3;
     }
     v_c.len = 3;
     uint8_t* i_end1_c = v_c.ptr + (((i_slice_c.len - (size_t)(v_c.ptr - i_slice_c.ptr)) / 3) * 3);
     while (v_c.ptr < i_end1_c) {
-      v_fa0 += v_c.ptr[0];
+      v_fa0 = ((uint8_t)(v_fa0 + v_c.ptr[0]));
       v_c.ptr[0] = v_fa0;
-      v_fa1 += v_c.ptr[1];
+      v_fa1 = ((uint8_t)(v_fa1 + v_c.ptr[1]));
       v_c.ptr[1] = v_fa1;
-      v_fa2 += v_c.ptr[2];
+      v_fa2 = ((uint8_t)(v_fa2 + v_c.ptr[2]));
       v_c.ptr[2] = v_fa2;
       v_c.ptr += 3;
     }
@@ -32087,13 +32087,13 @@
     v_c.len = 4;
     uint8_t* i_end0_c = v_c.ptr + (((i_slice_c.len - (size_t)(v_c.ptr - i_slice_c.ptr)) / 4) * 4);
     while (v_c.ptr < i_end0_c) {
-      v_fa0 += v_c.ptr[0];
+      v_fa0 = ((uint8_t)(v_fa0 + v_c.ptr[0]));
       v_c.ptr[0] = v_fa0;
-      v_fa1 += v_c.ptr[1];
+      v_fa1 = ((uint8_t)(v_fa1 + v_c.ptr[1]));
       v_c.ptr[1] = v_fa1;
-      v_fa2 += v_c.ptr[2];
+      v_fa2 = ((uint8_t)(v_fa2 + v_c.ptr[2]));
       v_c.ptr[2] = v_fa2;
-      v_fa3 += v_c.ptr[3];
+      v_fa3 = ((uint8_t)(v_fa3 + v_c.ptr[3]));
       v_c.ptr[3] = v_fa3;
       v_c.ptr += 4;
     }
@@ -32123,7 +32123,7 @@
   v_n = wuffs_base__u64__min(((uint64_t)(a_curr.len)), ((uint64_t)(a_prev.len)));
   v_i = 0;
   while (v_i < v_n) {
-    a_curr.ptr[v_i] += a_prev.ptr[v_i];
+    a_curr.ptr[v_i] = ((uint8_t)(a_curr.ptr[v_i] + a_prev.ptr[v_i]));
     v_i += 1;
   }
   return wuffs_base__make_empty_struct();
@@ -32152,19 +32152,19 @@
   if (((uint64_t)(a_prev.len)) == 0) {
     v_i = v_filter_distance;
     while (v_i < ((uint64_t)(a_curr.len))) {
-      a_curr.ptr[v_i] += (a_curr.ptr[(v_i - v_filter_distance)] / 2);
+      a_curr.ptr[v_i] = ((uint8_t)(a_curr.ptr[v_i] + (a_curr.ptr[(v_i - v_filter_distance)] / 2)));
       v_i += 1;
     }
   } else {
     v_n = wuffs_base__u64__min(((uint64_t)(a_curr.len)), ((uint64_t)(a_prev.len)));
     v_i = 0;
     while ((v_i < v_n) && (v_i < v_filter_distance)) {
-      a_curr.ptr[v_i] += (a_prev.ptr[v_i] / 2);
+      a_curr.ptr[v_i] = ((uint8_t)(a_curr.ptr[v_i] + (a_prev.ptr[v_i] / 2)));
       v_i += 1;
     }
     v_i = v_filter_distance;
     while (v_i < v_n) {
-      a_curr.ptr[v_i] += ((uint8_t)(((((uint32_t)(a_curr.ptr[(v_i - v_filter_distance)])) + ((uint32_t)(a_prev.ptr[v_i]))) / 2)));
+      a_curr.ptr[v_i] = ((uint8_t)(a_curr.ptr[v_i] + ((uint8_t)(((((uint32_t)(a_curr.ptr[(v_i - v_filter_distance)])) + ((uint32_t)(a_prev.ptr[v_i]))) / 2)))));
       v_i += 1;
     }
   }
@@ -32359,7 +32359,7 @@
   v_n = wuffs_base__u64__min(((uint64_t)(a_curr.len)), ((uint64_t)(a_prev.len)));
   v_i = 0;
   while ((v_i < v_n) && (v_i < v_filter_distance)) {
-    a_curr.ptr[v_i] += a_prev.ptr[v_i];
+    a_curr.ptr[v_i] = ((uint8_t)(a_curr.ptr[v_i] + a_prev.ptr[v_i]));
     v_i += 1;
   }
   v_i = v_filter_distance;
@@ -32386,7 +32386,7 @@
     } else {
       v_fa = v_fc;
     }
-    a_curr.ptr[v_i] += ((uint8_t)((v_fa & 255)));
+    a_curr.ptr[v_i] = ((uint8_t)(a_curr.ptr[v_i] + ((uint8_t)((v_fa & 255)))));
     v_i += 1;
   }
   return wuffs_base__make_empty_struct();
@@ -32453,7 +32453,7 @@
       } else {
         v_fa0 = v_fc0;
       }
-      v_c.ptr[0] += ((uint8_t)((v_fa0 & 255)));
+      v_c.ptr[0] = ((uint8_t)(v_c.ptr[0] + ((uint8_t)((v_fa0 & 255)))));
       v_fa0 = ((uint32_t)(v_c.ptr[0]));
       v_fc0 = v_fb0;
       v_fb1 = ((uint32_t)(v_p.ptr[1]));
@@ -32476,7 +32476,7 @@
       } else {
         v_fa1 = v_fc1;
       }
-      v_c.ptr[1] += ((uint8_t)((v_fa1 & 255)));
+      v_c.ptr[1] = ((uint8_t)(v_c.ptr[1] + ((uint8_t)((v_fa1 & 255)))));
       v_fa1 = ((uint32_t)(v_c.ptr[1]));
       v_fc1 = v_fb1;
       v_fb2 = ((uint32_t)(v_p.ptr[2]));
@@ -32499,7 +32499,7 @@
       } else {
         v_fa2 = v_fc2;
       }
-      v_c.ptr[2] += ((uint8_t)((v_fa2 & 255)));
+      v_c.ptr[2] = ((uint8_t)(v_c.ptr[2] + ((uint8_t)((v_fa2 & 255)))));
       v_fa2 = ((uint32_t)(v_c.ptr[2]));
       v_fc2 = v_fb2;
       v_c.ptr += 3;
@@ -32579,7 +32579,7 @@
       } else {
         v_fa0 = v_fc0;
       }
-      v_c.ptr[0] += ((uint8_t)((v_fa0 & 255)));
+      v_c.ptr[0] = ((uint8_t)(v_c.ptr[0] + ((uint8_t)((v_fa0 & 255)))));
       v_fa0 = ((uint32_t)(v_c.ptr[0]));
       v_fc0 = v_fb0;
       v_fb1 = ((uint32_t)(v_p.ptr[1]));
@@ -32602,7 +32602,7 @@
       } else {
         v_fa1 = v_fc1;
       }
-      v_c.ptr[1] += ((uint8_t)((v_fa1 & 255)));
+      v_c.ptr[1] = ((uint8_t)(v_c.ptr[1] + ((uint8_t)((v_fa1 & 255)))));
       v_fa1 = ((uint32_t)(v_c.ptr[1]));
       v_fc1 = v_fb1;
       v_fb2 = ((uint32_t)(v_p.ptr[2]));
@@ -32625,7 +32625,7 @@
       } else {
         v_fa2 = v_fc2;
       }
-      v_c.ptr[2] += ((uint8_t)((v_fa2 & 255)));
+      v_c.ptr[2] = ((uint8_t)(v_c.ptr[2] + ((uint8_t)((v_fa2 & 255)))));
       v_fa2 = ((uint32_t)(v_c.ptr[2]));
       v_fc2 = v_fb2;
       v_fb3 = ((uint32_t)(v_p.ptr[3]));
@@ -32648,7 +32648,7 @@
       } else {
         v_fa3 = v_fc3;
       }
-      v_c.ptr[3] += ((uint8_t)((v_fa3 & 255)));
+      v_c.ptr[3] = ((uint8_t)(v_c.ptr[3] + ((uint8_t)((v_fa3 & 255)))));
       v_fa3 = ((uint32_t)(v_c.ptr[3]));
       v_fc3 = v_fb3;
       v_c.ptr += 4;
@@ -34919,8 +34919,8 @@
             v_s = wuffs_base__slice_u8__subslice_i(v_s, 1);
           }
           v_bits_unpacked[0] = ((uint8_t)((v_bits_packed >> v_shift) * v_multiplier));
-          v_bits_packed <<= self->private_impl.f_depth;
-          v_packs_remaining -= 1;
+          v_bits_packed = ((uint8_t)(v_bits_packed << self->private_impl.f_depth));
+          v_packs_remaining = ((uint8_t)(v_packs_remaining - 1));
           wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_base__slice_u8__subslice_i(v_dst, v_i), v_dst_palette, wuffs_base__make_slice_u8(v_bits_unpacked, 1));
         }
         v_x += (((uint32_t)(1)) << WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][0]);
diff --git a/std/bmp/decode_bmp.wuffs b/std/bmp/decode_bmp.wuffs
index 18cfa08..e23014c 100644
--- a/std/bmp/decode_bmp.wuffs
+++ b/std/bmp/decode_bmp.wuffs
@@ -640,7 +640,7 @@
 							p0 += 1
 						} endwhile
 					} else {
-						indexes[0] = code >> 4
+						indexes[0] = (code >> 4) as base.u8
 						indexes[1] = code & 0x0F
 						p0 = 0
 						while p0 < this.rle_length {
diff --git a/std/png/decode_filter_fallback.wuffs b/std/png/decode_filter_fallback.wuffs
index 930a475..8b271c5 100644
--- a/std/png/decode_filter_fallback.wuffs
+++ b/std/png/decode_filter_fallback.wuffs
@@ -33,7 +33,7 @@
 		while i < args.curr.length(),
 			inv i_start < 8,
 		{
-			args.curr[i] ~mod+= fa
+			args.curr[i] = args.curr[i] ~mod+ fa
 			fa = args.curr[i]
 			i ~mod+= filter_distance
 		} endwhile
@@ -48,11 +48,11 @@
 	var fa2 : base.u8
 
 	iterate (c = args.curr)(length: 3, advance: 3, unroll: 2) {
-		fa0 ~mod+= c[0]
+		fa0 = fa0 ~mod+ c[0]
 		c[0] = fa0
-		fa1 ~mod+= c[1]
+		fa1 = fa1 ~mod+ c[1]
 		c[1] = fa1
-		fa2 ~mod+= c[2]
+		fa2 = fa2 ~mod+ c[2]
 		c[2] = fa2
 	}
 }
@@ -65,13 +65,13 @@
 	var fa3 : base.u8
 
 	iterate (c = args.curr)(length: 4, advance: 4, unroll: 1) {
-		fa0 ~mod+= c[0]
+		fa0 = fa0 ~mod+ c[0]
 		c[0] = fa0
-		fa1 ~mod+= c[1]
+		fa1 = fa1 ~mod+ c[1]
 		c[1] = fa1
-		fa2 ~mod+= c[2]
+		fa2 = fa2 ~mod+ c[2]
 		c[2] = fa2
-		fa3 ~mod+= c[3]
+		fa3 = fa3 ~mod+ c[3]
 		c[3] = fa3
 	}
 }
@@ -93,7 +93,7 @@
 		assert i < 0xFFFF_FFFF_FFFF_FFFF via "a < b: a < c; c <= b"(c: n)
 		assert i < args.curr.length() via "a < b: a < c; c <= b"(c: n)
 		assert i < args.prev.length() via "a < b: a < c; c <= b"(c: n)
-		args.curr[i] ~mod+= args.prev[i]
+		args.curr[i] = args.curr[i] ~mod+ (args.prev[i])
 		i += 1
 	} endwhile
 }
@@ -116,7 +116,7 @@
 		{
 			assert i < 0xFFFF_FFFF_FFFF_FFFF via "a < b: a < c; c <= b"(c: args.curr.length())
 			assert (i - filter_distance) < args.curr.length() via "(a - b) < c: a < c; 0 <= b"()
-			args.curr[i] ~mod+= args.curr[i - filter_distance] / 2
+			args.curr[i] = args.curr[i] ~mod+ (args.curr[i - filter_distance] / 2)
 			i += 1
 			assert i >= filter_distance via "a >= b: a >= (b + c); 0 <= c"(c: 1)
 		} endwhile
@@ -131,7 +131,7 @@
 			assert i < 0xFFFF_FFFF_FFFF_FFFF via "a < b: a < c; c <= b"(c: n)
 			assert i < args.curr.length() via "a < b: a < c; c <= b"(c: n)
 			assert i < args.prev.length() via "a < b: a < c; c <= b"(c: n)
-			args.curr[i] ~mod+= args.prev[i] / 2
+			args.curr[i] = args.curr[i] ~mod+ (args.prev[i] / 2)
 			i += 1
 		} endwhile
 
@@ -146,9 +146,9 @@
 			assert i < args.curr.length() via "a < b: a < c; c <= b"(c: n)
 			assert i < args.prev.length() via "a < b: a < c; c <= b"(c: n)
 			assert (i - filter_distance) < args.curr.length() via "(a - b) < c: a < c; 0 <= b"()
-			args.curr[i] ~mod+= ((
+			args.curr[i] = args.curr[i] ~mod+ (((
 				(args.curr[i - filter_distance] as base.u32) +
-				(args.prev[i] as base.u32)) / 2) as base.u8
+				(args.prev[i] as base.u32)) / 2) as base.u8)
 			i += 1
 			assert i >= filter_distance via "a >= b: a >= (b + c); 0 <= c"(c: 1)
 		} endwhile
@@ -245,7 +245,7 @@
 		assert i < 0xFFFF_FFFF_FFFF_FFFF via "a < b: a < c; c <= b"(c: n)
 		assert i < args.curr.length() via "a < b: a < c; c <= b"(c: n)
 		assert i < args.prev.length() via "a < b: a < c; c <= b"(c: n)
-		args.curr[i] ~mod+= args.prev[i]
+		args.curr[i] = args.curr[i] ~mod+ args.prev[i]
 		i += 1
 	} endwhile
 
@@ -284,7 +284,7 @@
 		} else {
 			fa = fc
 		}
-		args.curr[i] ~mod+= (fa & 0xFF) as base.u8
+		args.curr[i] = args.curr[i] ~mod+ ((fa & 0xFF) as base.u8)
 		i += 1
 		assert i >= filter_distance via "a >= b: a >= (b + c); 0 <= c"(c: 1)
 	} endwhile
@@ -337,7 +337,7 @@
 		} else {
 			fa0 = fc0
 		}
-		c[0] ~mod+= (fa0 & 0xFF) as base.u8
+		c[0] = c[0] ~mod+ ((fa0 & 0xFF) as base.u8)
 		fa0 = c[0] as base.u32
 		fc0 = fb0
 
@@ -362,7 +362,7 @@
 		} else {
 			fa1 = fc1
 		}
-		c[1] ~mod+= (fa1 & 0xFF) as base.u8
+		c[1] = c[1] ~mod+ ((fa1 & 0xFF) as base.u8)
 		fa1 = c[1] as base.u32
 		fc1 = fb1
 
@@ -387,7 +387,7 @@
 		} else {
 			fa2 = fc2
 		}
-		c[2] ~mod+= (fa2 & 0xFF) as base.u8
+		c[2] = c[2] ~mod+ ((fa2 & 0xFF) as base.u8)
 		fa2 = c[2] as base.u32
 		fc2 = fb2
 	}
@@ -447,7 +447,7 @@
 		} else {
 			fa0 = fc0
 		}
-		c[0] ~mod+= (fa0 & 0xFF) as base.u8
+		c[0] = c[0] ~mod+ ((fa0 & 0xFF) as base.u8)
 		fa0 = c[0] as base.u32
 		fc0 = fb0
 
@@ -472,7 +472,7 @@
 		} else {
 			fa1 = fc1
 		}
-		c[1] ~mod+= (fa1 & 0xFF) as base.u8
+		c[1] = c[1] ~mod+ ((fa1 & 0xFF) as base.u8)
 		fa1 = c[1] as base.u32
 		fc1 = fb1
 
@@ -497,7 +497,7 @@
 		} else {
 			fa2 = fc2
 		}
-		c[2] ~mod+= (fa2 & 0xFF) as base.u8
+		c[2] = c[2] ~mod+ ((fa2 & 0xFF) as base.u8)
 		fa2 = c[2] as base.u32
 		fc2 = fb2
 
@@ -522,7 +522,7 @@
 		} else {
 			fa3 = fc3
 		}
-		c[3] ~mod+= (fa3 & 0xFF) as base.u8
+		c[3] = c[3] ~mod+ ((fa3 & 0xFF) as base.u8)
 		fa3 = c[3] as base.u32
 		fc3 = fb3
 	}
diff --git a/std/png/decode_swizzle_tricky.wuffs b/std/png/decode_swizzle_tricky.wuffs
index 8d2b267..44dd36c 100644
--- a/std/png/decode_swizzle_tricky.wuffs
+++ b/std/png/decode_swizzle_tricky.wuffs
@@ -150,8 +150,8 @@
 						s = s[1 ..]
 					}
 					bits_unpacked[0] = (bits_packed >> shift) ~mod* multiplier
-					bits_packed ~mod<<= this.depth
-					packs_remaining ~mod-= 1
+					bits_packed = bits_packed ~mod<< this.depth
+					packs_remaining = packs_remaining ~mod- 1
 
 					this.swizzler.swizzle_interleaved_from_slice!(
 						dst: dst[i ..],