
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.
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.