Graphics internal formats

The graphics library stores pixels in a small set of internal formats and then converts to the platform backend as needed. Backend code should treat the internal format as a contract, not as a suggestion, because SCREEN modes, SCREENSET, image buffers, palette handling, and driver updates all depend on it.

What to watch

- Preserve byte order and pitch calculations.
- Keep palette modes separate from true-color modes.
- Avoid assuming that the visible window size equals the framebuffer size.
- Test mode changes, SCREENSET pages, fullscreen/maximized/windowed cases, and mouse coordinate scaling on the backend being changed.

Backend rule

If a backend needs a native surface format that differs from the FreeBASIC format, do the conversion at the backend boundary. Do not let backend-specific pixel assumptions leak back into shared graphics code.