Y axis inversion in 3D rasterization
Let's look at your formula:

pixel_y = (y_world / z_world + 1) / 2 * ScreenHeight();
pixel_y = ScreenHeight() - 1 - pixel_y;


Let's call y_world / z_world for short a, H for ScreenHeight(). So you have:

Y = (a + 1) / 2 *H
Y = H - 1 - Y


Let's replace the first in the second:

   Y = H - 1 - (a + 1) / 2 * H
=&gt; Y = H * (1 - (a + 1) / 2) - 1
=&gt; Y = H * ((2 - a - 1) / 2) - 1
=&gt; Y = H * (1 - a) / 2 - 1


Which is the formula you said every one uses (except with an off-by-one error):

pixel_y = (1 - y_world / z_world) / 2 * ScreenHeight();


Off-by-one error aside, looks like you have the right understanding, just didn't work out that the formula everyone uses is the optimized version of what you came up with.