.
diff --git a/sparse_strips/vello_sparse_shaders/shaders/filters.wgsl b/sparse_strips/vello_sparse_shaders/shaders/filters.wgsl
index 166a338..5619a5f 100644
--- a/sparse_strips/vello_sparse_shaders/shaders/filters.wgsl
+++ b/sparse_strips/vello_sparse_shaders/shaders/filters.wgsl
@@ -287,9 +287,18 @@
     var color = textureSampleLevel(in_tex, linear_sampler, (src_texel + 0.5) / tex_size, 0.0) * center_weight;
 
     // See https://github.com/linebender/vello/pull/1601#issuecomment-4323170395 for why we convert
-    // into array first.
-    let weights_arr = array<f32, 3>(weights.x, weights.y, weights.z);
-    let offsets_arr = array<f32, 3>(offsets.x, offsets.y, offsets.z);
+    // into array first. Also see https://github.com/linebender/vello/pull/1605 for why we
+    // assign each field separately.
+
+    var weights_arr: array<f32, 3>;
+    weights_arr[0] = weights.x;
+    weights_arr[1] = weights.y;
+    weights_arr[2] = weights.z;
+
+    var offsets_arr: array<f32, 3>;
+    offsets_arr[0] = offsets.x;
+    offsets_arr[1] = offsets.y;
+    offsets_arr[2] = offsets.z;
 
     // Then, compute and sum the contributions of the adjacent pixels.
     for (var i = 0u; i < n_linear_taps; i++) {