Tentando desenhar um arco em um bufferedImage

oi, eu tô tentando desenhar um arco mas não tô conseguindo… alguém pode me dizer o q eu estou fazendo de errado?

            icm = new IndexColorModel(8,256,r,g,b);
            bf =  new BufferedImage(mapWidth+600,mapHeight+600,BufferedImage.TYPE_BYTE_INDEXED,icm);
            Graphics2D gr = bf.createGraphics();
            gr.setColor( Color.lightGray);
            gr.fillRect(0,0,mapWidth+600,mapHeight+600);
            wr = bf.getRaster();
            wr.setDataElements(300,300,mapWidth,mapHeight,vMap);
            imagem = new JLabel();
            imagem.setIcon(new ImageIcon(bf));
            QuadCurve2D q = new QuadCurve2D.Float();
            q.setCurve(40, 39, 183.5, 7, 2207, 53);
            gr.draw(q);
            gr.dispose();

Obrigada

Deixe a linha do setIcon por último. Aparentemente vc está primeiro desenhando a imagem na tela, para só depois pintar o arco na memória.