Switching to GLCanvas did solve the ghosting issue, but introduced the same anti-aliasing issue I got when upgrading to 2.3.2. The issue occurs both with 2.1.5 and 2.3.2 when using GLCanvas, and with 2.3.2 when using GLJpanel (i.e. the only combination where MSAA works well is 2.1.5 with GLJpanel).
Here is another image that shows the anti-aliasing issue:
Note the horrible look where the white walls meet the grey ceiling. The issue occurs only where two different models come together, but only if the camera is far away (if I move the camera towards the wall the junction becomes a nice smooth line). When using 2.1.5 with GLJPanel, everything looks smooth regardless of distance to the camera.
I'm using Intel(R) HD Graphics 530 (driver version 22.214.171.12473) on an Intel Core i7-6700K, Windows 10, java 1.8.0_74, 32GB memory. Everything is running at factory speeds.
I did find a way to solve the ghosting issue using 2.1.5 and GLJPanel based on your original response. I originally enabled depth testing and blending in the init method of GLEventListener. I now changed it so that I enable them at the start of the display method and disable them at the end of display method.
I will learn how to use FBOs, and in general learn more about jogl / opengl, and hopefully at some point figure out what I am doing wrong with the MSAA so I can upgrade to the latest version and start using GLCanvas. Thanks for the help.