Pixel-perfect drawing

My advice - make a class that has the exact interface that you want. Use it all over the place in your code. Implement that class with the appropriate OpenGL calls. I know this sounds like a “duh,” but I think you might be amazed by how many people just chose to “live with” adding 0.5 to X and Y, and all of the other inconveniences that you’ll probably run into. There’s no honor in having to fix all of your code because of an off-by-one error you discovered at the last minute. Encapsulate it all, so you can (hopefully) fix it in one place.