I am not sure which result is correct now.
When our developer view the render logic we found why our map render like this is because we read the alpha value for each pixel and all of them aren't 255, if we hard code it equal 255 the result just render clear.
After that I did a test based on other utility:
Qgis 3.4.4: It just the same like your first image
GeoViewer(LIZARDTECH): It render the same as ours
Windows Photo Viewer:
In high level it render like the first image, but after zoom in it render like ours:
Now I am confused, our developer will do further research about it, any update I will let you know.