Как я вижу то, что происходит:
- создается окно и растягивается оконным менеджером на половину экрана;
- отображение в такое окно происходит по меньшей мере раз т.к. фон закрашивается зеленым;
- JFrame (а вместе с ним и JPanel и Canvas) урезается до размеров заданых для jFrame с помощью setMinimumSize или setPreferredSize. JFrame при этом не получает никаких сообщений. Приоритет отдается setPreferredSize. Само окно(ну, т.е. иксовое) при этом остается прежних размеров - проверил с помощью xwininfo;
- далее отображение происходит в урезаный jFrame. Это как раз изображение на картинке выше;
- если после этого изменить размеры окна вручную, то все становится норм.
Есть мысли как справиться с этим багом? Ну или хотя бы где поискать...