No puedo encontrar ningún algoritmo de zoom

Por ahora, estoy haciendo zoom de esta manera:

float zoom = 1.1f;
camera.y *= zoom;
camera.x *= zoom;
tileSize *= zoom;

Pero se siente realmente basura y ciertamente estoy haciendo algo que no es correcto: quiero que haga zoom en un mapa de mosaico relativamente al centro de la pantalla, pero solo hace zoom en el origen y sacude un poco la cámara. No es el tipo de zoom que quería.

Prefiero una respuesta realmente simple.

Gracias de antemano y perdón si es un duplicado.

EDIT: así es como dibujo el mapa:

for (int x = 0; x < map.size(); x++) {
        for (int y = 0; y < map.at(x).size(); y++) {
            DrawRect(x * round(tileSize) - camera.x, y * round(tileSize) - camera.y, round(tileSize), round(tileSize), WHITE);
        }
}

Respuestas a la pregunta(0)

Su respuesta a la pregunta