diff --git a/libpixelflinger/fixed.cpp b/libpixelflinger/fixed.cpp
index 5b920628bad1e6d5a9c6a871e6e81df906d0b8a6..5094537766a50de0f828839d156ba2ce245c0f13 100644
--- a/libpixelflinger/fixed.cpp
+++ b/libpixelflinger/fixed.cpp
@@ -62,7 +62,8 @@ int32_t gglRecipQ(GGLfixed x, int q)
     int shift;
     x = gglRecipQNormalized(x, &shift);
     shift += 16-q;
-    x += 1L << (shift-1);   // rounding
+    if (shift > 0)
+        x += 1L << (shift-1);   // rounding
     x >>= shift;
     return x;
 }