It is a conflict between heavy and lightwieght surfaces. You glcanvas is heavyweight and will always draw on top. Your menu is lightweight and will always be drawn over by the heavyweight canvas. There is a static call that makes menus heavyweight. I think it is along the lines of menu.setdefaultlightweight( false ). You might want to check out javagaming.org for quicker help. There is an article on Sun’s website that explains heavy/light weight better than I can.