diff --git a/projects/bloom/src/BloomAndFlares.cpp b/projects/bloom/src/BloomAndFlares.cpp
index e4ca93574cedd827179d6fd527f0b51540bc0d86..6f26db9de0f2c8334b6dd7e5dd6cf4b6f48baedc 100644
--- a/projects/bloom/src/BloomAndFlares.cpp
+++ b/projects/bloom/src/BloomAndFlares.cpp
@@ -30,7 +30,7 @@ BloomAndFlares::BloomAndFlares(
                      });
     for(uint32_t mipLevel = 0; mipLevel < m_Blur.getMipCount(); mipLevel++)
     {
-        m_DownsampleDescSets.push_back(
+		m_DownsampleDescSets.push_back(
                 p_Core->createDescriptorSet(dsProg.getReflectedDescriptors()[0]));
     }
     m_DownsamplePipe = p_Core->createComputePipeline(
@@ -109,7 +109,7 @@ void BloomAndFlares::execDownsamplePipe(const vkcv::CommandStreamHandle &cmdStre
     // downsample dispatches of blur buffer's mip maps
     float mipDispatchCountX = dispatchCountX;
     float mipDispatchCountY = dispatchCountY;
-    for(uint32_t mipLevel = 1; mipLevel < m_Blur.getMipCount(); mipLevel++)
+    for(uint32_t mipLevel = 1; mipLevel < m_DownsampleDescSets.size(); mipLevel++)
     {
         // mip descriptor writes
         vkcv::DescriptorWrites mipDescriptorWrites;
@@ -151,7 +151,10 @@ void BloomAndFlares::execUpsamplePipe(const vkcv::CommandStreamHandle &cmdStream
     // upsample dispatch
     p_Core->prepareImageForStorage(cmdStream, m_Blur.getHandle());
 
-    uint32_t upsampleMipLevels = std::min(m_Blur.getMipCount(), static_cast<uint32_t>(5));
+    const uint32_t upsampleMipLevels = std::min(
+    		static_cast<uint32_t>(m_UpsampleDescSets.size() - 1),
+    		static_cast<uint32_t>(5)
+	);
 
     // upsample dispatch for each mip map
     for(uint32_t mipLevel = upsampleMipLevels; mipLevel > 0; mipLevel--)
diff --git a/projects/bloom/src/main.cpp b/projects/bloom/src/main.cpp
index e2f3754468c3198e91bc09c55430cb08f32e7fbf..14a3533bd812dda4bb1fd30ccab89318440b1a1f 100644
--- a/projects/bloom/src/main.cpp
+++ b/projects/bloom/src/main.cpp
@@ -293,7 +293,6 @@ int main(int argc, const char** argv) {
 	std::vector<vkcv::DrawcallInfo> drawcalls;
 	std::vector<vkcv::DrawcallInfo> shadowDrawcalls;
 	for (int i = 0; i < meshes.size(); i++) {
-
 		drawcalls.push_back(vkcv::DrawcallInfo(meshes[i], { 
 			vkcv::DescriptorSetUsage(0, core.getDescriptorSet(forwardShadingDescriptorSet).vulkanHandle),
 			vkcv::DescriptorSetUsage(1, core.getDescriptorSet(perMeshDescriptorSets[i]).vulkanHandle) }));
@@ -395,6 +394,7 @@ int main(int argc, const char** argv) {
         baf.execWholePipeline(cmdStream, colorBuffer);
 
         core.prepareImageForStorage(cmdStream, swapchainInput);
+        
         // gamma correction descriptor write
         vkcv::DescriptorWrites gammaCorrectionDescriptorWrites;
         gammaCorrectionDescriptorWrites.storageImageWrites = {