Standard behaviour would be ABC red, D Green. I would guess your resize callback is actually correct (since your program works correctly after a resize), but your initialization code is wrong in some way. As a check try calling the resize code as a final call during initialization.