OK, I converted the image to 8 bits and it still looks like the above screenshot. The following is the code that works for hardware but that hasn't been working for the software renderer:
public void draw(java.awt.Canvas glCanvas) {
buffer.clear(java.awt.Color.black);
buffer.update();
buffer.blit(background, 0, 0, 0, 0, background.getWidth(), background.getHeight(), buffer.getOutputWidth(), buffer.getOutputHeight(), -1, false);
playButton.draw(buffer);
loadButton.draw(buffer);
introButton.draw(buffer);
quitButton.draw(buffer);
if (buffer.usesRenderer(IRenderer.RENDERER_OPENGL)) {
buffer.displayGLOnly();
glCanvas.repaint();
}
else buffer.display(glCanvas.getGraphics());
}