Duvida sobre GeneralPath.contains

Boa tarde povo do GUJ,
Estou tentando fazer uma ferramenta borracha que remove os pontos de uma forma, para fazer isso criei os seguintes metodos:

//Para desenhar o quadrado branco da borracha
public void mouseMoved(MouseEvent e) {
        gp.reset();
        gp.moveTo(e.getX()-metadeTamanho, e.getY()-metadeTamanho);
        gp.lineTo(e.getX()+metadeTamanho, e.getY()-metadeTamanho);
        gp.lineTo(e.getX()+metadeTamanho, e.getY()+metadeTamanho);
        gp.lineTo(e.getX()-metadeTamanho, e.getY()+metadeTamanho);
        gp.closePath();
        this.areaDesenho.repaint();
        System.out.println("Mouse moved");      
}

//Para remover os pontos
public void mousePressed(MouseEvent e) {
        for(int i = 0; i < this.areaDesenho.getFormas().size(); i++)
        {
            int teste = 0;
            FormaGeometrica forma = this.areaDesenho.getFormas().get(i);
            for(int j = 0; j < forma.getPontos().size(); j++)
            {
                
                Point ponto = forma.getPontos().get(j);
                if(gp.contains(ponto.getX(),ponto.getY()))
                {
                    forma.removePontos(ponto);
                    System.out.println(ponto.x+","+ponto.y);
                }
                
            }
        }
        this.areaDesenho.repaint();
}

O problema é que ele não remove todos os pontos dentro do quadrado no primeiro click.Ainda não consegui explicar o que está acontecendo, parece ser um erro bobo mas preciso que outra pessoa olhe o código.
Obrigado!

Bom pessoal, desculpa pelo post duplicado. Eu consegui resolver aqui. Um probleminha de lógica básico, resolvi mudando o for para:

for(int j = 0; j < pontos.size(); j++)
            {
                
                Point ponto = pontos.get(j);
                if(gp.contains(ponto))
                {
                    if(!pontos.remove(ponto))
                        System.out.println("Falha remoção");
                    j--;
                }
                
            }

O que fez a diferença foi o j–, porque eu removia da lista e adicionava +1 ao contador, pulando o próximo elemento da lista. Nada que um pouco de papel, caneta e testes não resolvesse hahaha.