diff --git a/projects/voxelization/resources/shaders/tonemapping.comp b/projects/voxelization/resources/shaders/tonemapping.comp
index 500fa0c2b2682f542e07e2491879cab00b11d596..8fa07d39ebb56eab857cdccb755a6558f5ae1ec3 100644
--- a/projects/voxelization/resources/shaders/tonemapping.comp
+++ b/projects/voxelization/resources/shaders/tonemapping.comp
@@ -74,11 +74,22 @@ vec3 applyGrain(ivec2 uv, vec3 c){
 }
 
 vec2 computeDistortedUV(vec2 uv, float aspectRatio){
-    vec2    toCenter    = vec2(vec2(0.5) - uv);
-    float   r2          = dot(toCenter, toCenter);
-    float   k1          = 0.15f;
-    float   k2          = 0.2f;
-    return uv + toCenter * (r2*k1 + r2*r2*k2); 
+    uv          = uv * 2 - 1;
+    float   r2  = dot(uv, uv);
+    float   k1  = 0.02f;
+    
+    float maxR2     = dot(vec2(1), vec2(1));
+    float maxFactor = maxR2 * k1;
+    
+    // correction only needed for pincushion distortion
+    maxFactor       = min(maxFactor, 0);
+    
+    uv /= 1 + r2*k1;
+    
+    // correction to avoid going out of [-1, 1] range when using barrel distortion 
+    uv *= 1 + maxFactor;
+    
+    return uv * 0.5 + 0.5;
 }
 
 float computeLocalContrast(vec2 uv){