20cfadeb0b
El viewport del pase final es calculava com `Game::WIDTH * zoom_factor_`. Però `zoom_factor_` està capat a `max_zoom_`, que es deriva de `display - 100px` (marge per a decoracions). En fullscreen això deixa marc negre als 4 costats: amb display 1920×1080 max_zoom_≈1.25 → viewport 1600×900 dins de 1920×1080. Ara l'escala es calcula directament de la finestra física actual com a aspect-fit (`min(curW/1280, curH/720)`), de manera que el viewport sempre omple un eix i lletraboxeja l'altre, independentment del zoom_factor_. El zoom_factor_ continua dimensionant la finestra en mode windowed (F1/F2).