How to convert a thread ID into Screen Space Coord in an OpenGL Compute Shader?
The problem is actually in your fragment shader:

color_out = texture(source_image, gl_FragCoord.xy);


The texture() function accepts normalized coordinates which range from 0.0 to 1.0. The gl_FragCoord built in contains window coordinates which range from (0.0, 0.0) to (window width, window height).

To fix this, change the fragment shader to this:

color_out = texture(source_image, gl_FragCoord.xy / vec2(1280.0, 720.0));


That is assuming your window is 1280x720, change as necessary.