As far as I can tell dotscreen is working correctly. Because it is written to take in to account pixelWidth and pixelHeight, it means the effect produces a dot in a certain pixel distance. Therefore increasing the window size will show more dots. Then you have a letterbox scale which resizes them to both be the same final size, which is possibly confusing. If dotscreen were to look the same regardless of the window size, it should not use pixelWidth and pixelHeight and just base calculations off the texture co-ordinates, but we decided to do it the pixel-based way.
Your effect simply looks like it mixes up texture co-ordinates and screen co-ordinates. It looks like you correctly convert the mouse to texture co-ordinates by dividing it by the resolution, but this line appears to be wrong:
vec2 uv = (gl_FragCoord.xy / iResolution.xy);
The fragment co-ordinates are already in texture co-ordinates, so dividing again by the resolution does not make sense.