Guide image for -denoise

This may be related to precision issues with the calculations, leading to slightly out-of-range (negative in your case) values that are converted to 255 afterwards.
Could you check with a cut 0,255 just after the call to denoise ?

(if this is what I think, there is still a bug, but at least, I should be able to fix this easily).