Como aciono os eventos MouseMotionListener em tempo real?

Estou tentando criar um programa de desenho gráfico que permita ao usuário desenhar pixels vermelhos na tela, arrastando o mouse sobre ela. De certa forma, você pode pensar neste programa como o programa Paint da Microsoft, mas apenas com a ferramenta de desenho a lápis e a cor vermelha.

Infelizmente, omouseDragged() função no meu programa não está funcionando corretamente. Irá pular alguns pixels da tela se eu mover o mouse muito rápido, assim:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class FrameView extends JFrame {
    JPanel panel;
    Graphics2D drawingContext;

    public static void main(String[] args) {
        new FrameView();
    }

    public FrameView() {
        panel = new JPanel();
        panel.addMouseMotionListener(new MouseControls());
        panel.setBackground(Color.WHITE);
        this.add(panel);
        this.setSize(new Dimension(500, 500));
        this.setTitle("Drawing Program");
        this.setVisible(true);
        drawingContext = (Graphics2D)panel.getGraphics();
    }

    private class MouseControls extends MouseAdapter {
        @Override
        public void mouseDragged(MouseEvent e) {
            int x = e.getX();
            int y = e.getY();

            final int WIDTH = 1;
            final int HEIGHT = 1;
            Shape pixel = new Rectangle(x, y, WIDTH, HEIGHT);
            drawingContext.setColor(Color.RED);
            drawingContext.draw(pixel);
        }
    }
}

questionAnswers(1)

yourAnswerToTheQuestion