.
diff --git a/sparse_strips/vello_hybrid/src/render/common.rs b/sparse_strips/vello_hybrid/src/render/common.rs
index d55f425..0288a52 100644
--- a/sparse_strips/vello_hybrid/src/render/common.rs
+++ b/sparse_strips/vello_hybrid/src/render/common.rs
@@ -28,7 +28,7 @@
 }
 
 /// Configuration for the GPU renderer.
-#[repr(C)]
+#[repr(C, align(16))]
 #[derive(Debug, Copy, Clone, Pod, Zeroable)]
 pub struct Config {
     /// Width of the rendering target.
diff --git a/sparse_strips/vello_sparse_shaders/shaders/render_strips.wgsl b/sparse_strips/vello_sparse_shaders/shaders/render_strips.wgsl
index bc598c4..368acff 100644
--- a/sparse_strips/vello_sparse_shaders/shaders/render_strips.wgsl
+++ b/sparse_strips/vello_sparse_shaders/shaders/render_strips.wgsl
@@ -114,9 +114,7 @@
     // Pre-calculated on CPU since WebGL2 doesn't support `firstTrailingBit`.
     encoded_paints_tex_width_bits: u32,
     // Padding to satisfy WebGL's 16-byte alignment requirement for uniform buffers.
-    _padding0: u32,
-    _padding1: u32,
-    _padding2: u32,
+    _padding: array<u32, 3>,
 }
 
 // `paint` bit layout: