diff --git a/projects/wobble_bobble/shaders/grid.vert b/projects/wobble_bobble/shaders/grid.vert
index b7fb8d83be3baad931a0bdb2028691dfb4b8698f..44e54c6c4151e6697ef6f71fcb185a388940f284 100644
--- a/projects/wobble_bobble/shaders/grid.vert
+++ b/projects/wobble_bobble/shaders/grid.vert
@@ -11,6 +11,10 @@ layout( push_constant ) uniform constants{
     mat4 mvp;
 };
 
+ivec3 actual_mod(ivec3 x, ivec3 y) {
+    return x - y * (x/y);
+}
+
 void main()	{
     ivec3 gridResolution = imageSize(gridImage);
 
@@ -20,7 +24,7 @@ void main()	{
         gl_InstanceIndex / gridResolution.x / gridResolution.y
     );
 
-    gridID = ivec3(mod(gridID, gridResolution));
+    gridID = actual_mod(gridID, gridResolution);
 
     vec3 position = (vec3(gridID) + vec3(0.5f)) / gridResolution;
     float size = 1.0f / length(vec3(gridResolution));