diff --git a/projects/fire_works/shaders/add.comp b/projects/fire_works/shaders/add.comp
index 1846085e68090574614eb4562f816c8dfec3fc28..3187e18d76e22db06c30766f25b5aba9e32d69be 100644
--- a/projects/fire_works/shaders/add.comp
+++ b/projects/fire_works/shaders/add.comp
@@ -18,12 +18,6 @@ void main() {
     vec4 outSmoke = imageLoad(inSmoke, uv);
     vec4 outTrails = imageLoad(inTrails, uv);
 
-    // 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 - 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!
 
     vec4 result = vec4(
diff --git a/projects/fire_works/shaders/particle.frag b/projects/fire_works/shaders/particle.frag
index 97221ef2fd9fcbf204bfb834719b309aaf72a3cc..173c83ef5d7a79bfd8446c5586b7a2f487fe7546 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, max(value * 2.0f, 0.0f)); // Use inverse alpha value
+        outColor = vec4(passColor, 1.0f - max(value * 2.0f, 0.0f));
     } else {
         discard;
     }
diff --git a/projects/fire_works/shaders/smoke.frag b/projects/fire_works/shaders/smoke.frag
index ad4ae33d570cc5b5370faaea7872eab99e43e6b6..7339c6ee64d321267f0cafb2f0169c9189d15c42 100644
--- a/projects/fire_works/shaders/smoke.frag
+++ b/projects/fire_works/shaders/smoke.frag
@@ -56,9 +56,7 @@ 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 - clamp(result.a, 0, 1);;
+    result.a = clamp(result.a, 0, 1);;
 
     if (result.a < 1.0f) {
         outColor = result;
diff --git a/projects/fire_works/src/main.cpp b/projects/fire_works/src/main.cpp
index 435bfc62512044356225b00a1b2487e4fced9775..3d894904d81fada1d3a93c7c76a160459bab9fab 100644
--- a/projects/fire_works/src/main.cpp
+++ b/projects/fire_works/src/main.cpp
@@ -260,7 +260,6 @@ int main(int argc, const char **argv) {
 	particles.resize(PARTICLE_COUNT);
 	initializeParticles(particles);
 	
-	
 	vkcv::Buffer<particle_t> particleBuffer = core.createBuffer<particle_t>(
 		vkcv::BufferType::STORAGE,
 		particles.size(),
@@ -275,8 +274,7 @@ int main(int argc, const char **argv) {
 		core.createBuffer<particle_t>(vkcv::BufferType::STORAGE, particles.size());
 
 	particleBufferCopy.fill(particles);
-
-
+	
 	{
 		vkcv::DescriptorWrites writes;
 		writes.writeStorageBuffer(0, particleBuffer.getHandle());
@@ -393,7 +391,6 @@ int main(int argc, const char **argv) {
 		core.writeDescriptorSet(generationDescriptorSet, writes);
 	}
 
-
 	std::vector<smoke_t> smokes;
 	smokes.reserve(SMOKE_COUNT);
 	
@@ -548,6 +545,8 @@ int main(int argc, const char **argv) {
 		true
 	};
 	
+	smokePipelineDefinition.m_blendMode = vkcv::BlendMode::Additive;
+	
 	vkcv::GraphicsPipelineHandle smokePipeline = core.createGraphicsPipeline(smokePipelineDefinition);
 	
 	const std::vector<vkcv::VertexAttachment> vaTrail = trailShaderProgram.getVertexAttachments();
@@ -570,6 +569,7 @@ int main(int argc, const char **argv) {
 	};
 	
 	trailPipelineDefinition.m_PrimitiveTopology = vkcv::PrimitiveTopology::PointList;
+	trailPipelineDefinition.m_blendMode = vkcv::BlendMode::Additive;
 	
 	vkcv::GraphicsPipelineHandle trailPipeline = core.createGraphicsPipeline(trailPipelineDefinition);
 	
@@ -639,6 +639,8 @@ int main(int argc, const char **argv) {
 		true
 	};
 	
+	particlePipelineDefinition.m_blendMode = vkcv::BlendMode::Additive;
+	
 	vkcv::GraphicsPipelineHandle particlePipeline = core.createGraphicsPipeline(particlePipelineDefinition);
 	
 	std::vector<vkcv::DrawcallInfo> drawcallsParticles;
diff --git a/src/vkcv/Core.cpp b/src/vkcv/Core.cpp
index 06942b87c072566120d4397f3d3be728770ae057..22cc66e7cb9c31d569f5d56fab59a7b17cd840a4 100644
--- a/src/vkcv/Core.cpp
+++ b/src/vkcv/Core.cpp
@@ -249,9 +249,9 @@ namespace vkcv
 
 				clearValues.emplace_back(std::array<float, 4>{
 					clear,
-						clear,
-						clear,
-						1.f
+					clear,
+					clear,
+					0.f
 				});
 			}
 		}