diff --git a/projects/fire_works/shaders/add.comp b/projects/fire_works/shaders/add.comp
index 70a15c4e93e07728c081c54d4fe49469277dab8f..1846085e68090574614eb4562f816c8dfec3fc28 100644
--- a/projects/fire_works/shaders/add.comp
+++ b/projects/fire_works/shaders/add.comp
@@ -20,9 +20,9 @@ void main() {
 
     // Reverse alpha values:
     // -> Because clear value is always vec4(0, 0, 0, 1) which is now vec4(0, 0, 0, 0)!
-    outParticles.a = 1.0f - outParticles.a;
-    outSmoke.a = 1.0f - outSmoke.a;
-    outTrails.a = 1.0f - outTrails.a;
+    outParticles.a = 1.0f - clamp(outParticles.a, 0, 1);
+    outSmoke.a = 1.0f - clamp(outSmoke.a, 0, 1);
+    outTrails.a = 1.0f - clamp(outTrails.a, 0, 1);
 
     // TODO: add noise to the smoke here!
 
@@ -34,5 +34,10 @@ void main() {
         outParticles.a + outSmoke.a + outTrails.a
     );
 
+    result.r = clamp(result.r, 0, 1);
+    result.g = clamp(result.g, 0, 1);
+    result.b = clamp(result.b, 0, 1);
+    result.a = clamp(result.a, 0, 1);
+
     imageStore(outImage, uv, result);
 }
\ No newline at end of file
diff --git a/projects/fire_works/shaders/particle.frag b/projects/fire_works/shaders/particle.frag
index e1fa6de0a0280c4be1e09cc8e29346b3e11b19cc..97221ef2fd9fcbf204bfb834719b309aaf72a3cc 100644
--- a/projects/fire_works/shaders/particle.frag
+++ b/projects/fire_works/shaders/particle.frag
@@ -14,7 +14,7 @@ void main()	{
     const float value = length(passPos);
 
     if (value < 0.5f) {
-        outColor = vec4(passColor, value * 2.0f); // Use inverse alpha value
+        outColor = vec4(passColor, max(value * 2.0f, 0.0f)); // Use inverse alpha value
     } else {
         discard;
     }
diff --git a/projects/fire_works/shaders/smoke.frag b/projects/fire_works/shaders/smoke.frag
index 30fb3667ef1f54d68540fd760c846c8dca6d0aa4..ad4ae33d570cc5b5370faaea7872eab99e43e6b6 100644
--- a/projects/fire_works/shaders/smoke.frag
+++ b/projects/fire_works/shaders/smoke.frag
@@ -53,8 +53,12 @@ void main()	{
         );
     }
 
+    result.r = clamp(result.r, 0, 1);
+    result.g = clamp(result.g, 0, 1);
+    result.b = clamp(result.b, 0, 1);
+
     // Inverse alpha value
-    result.a = 1.0f - result.a;
+    result.a = 1.0f - clamp(result.a, 0, 1);;
 
     if (result.a < 1.0f) {
         outColor = result;