diff --git a/ref/vk/TODO.md b/ref/vk/TODO.md
index 9849cc0f8a..b46e2571d7 100644
--- a/ref/vk/TODO.md
+++ b/ref/vk/TODO.md
@@ -1,20 +1,22 @@
 ## Next
+- [ ] add white furnace render test
+- [ ] tune A-Trous step widths for different channels
+- [ ] temporal glitches with dontBlurSamples() and ATrous
 - [ ] fix no-hit bounce absent legacy blending
 - [ ] -vkdbgprintf or something
 - [ ] performance profiling and comparison
 
+# Previously
 ## 2024-01-26 E369
-- [ ] white furnace test
+- [x] white furnace test
 	- [x] do it using display_only mode
 	- [x] do it via separate flag
 	- [x] too dark indirect: blurSamples() returns values too small (incorrect sigma|scale?)
 		- [x] do a box blur test
 		- [x] do A-trous wavelet denoiser
-	- [ ] tune A-Trous step widths for different channels
 	- [x] diffuse and specular debug display modes
-	- [ ] temporal glitches with dontBlurSamples() and ATrous
+- [x] why did direct lighting became brighter on c2a5?
 
-# Previously
 ## 2024-01-23 E368
 - [ ] specular bounce
     - [x] specular-vs-diffuse choice based on metalness+frensel
diff --git a/ref/vk/shaders/denoiser.comp b/ref/vk/shaders/denoiser.comp
index 4dc6db1ba5..922259dcd5 100644
--- a/ref/vk/shaders/denoiser.comp
+++ b/ref/vk/shaders/denoiser.comp
@@ -208,10 +208,8 @@ Components blurATrous(const ivec2 res, const ivec2 pix, vec3 pos, vec3 shading_n
 
 	const float one_over_weight = 1. / weight_total;
 	c.direct_diffuse *= one_over_weight;
-	c.direct_diffuse *= one_over_weight;
 	c.indirect_diffuse *= one_over_weight;
 	c.direct_specular *= one_over_weight;
-	c.direct_specular *= one_over_weight;
 	c.indirect_specular *= one_over_weight;
 	return c;
 }