Как сделать масштабирование содержимого формы (WinForms) при прокручивании колеса мышки?

Пытаюсь сделать так, чтобы изображение в форме масштабировалось при прокручивании колеса мышки. По задумке масштабирование должно выполняться относительно местоположения курсора, но в реальности изображение дергается в произвольную точку (логику так и не уловил), а уже затем масштабируется относительно нее. Подскажите, пожалуйста, что я делаю неправильно? Заранее спасибо!

internal class Program : Form
{
    Point point;
    float zoomFactor = 1.0f;
    
    public Program()
    {
        Paint += MyPaint;
        MouseWheel += MyWheel;
    }

    private void MyWheel(object sender, MouseEventArgs e)
    {
        point = e.Location;
        zoomFactor += (float)e.Delta / 1200;
        Invalidate();
    }

    private void MyPaint(object sender, PaintEventArgs e)
    {
        e.Graphics.TranslateTransform(point.X, point.Y);
        e.Graphics.ScaleTransform(zoomFactor, zoomFactor);
        e.Graphics.TranslateTransform(-point.X, -point.Y);

        var pen = new Pen(Color.Red, 4);
        e.Graphics.DrawLine(pen, 0, 0, 500, 500);
    }

    public static void Main()
    {
        Application.Run(new Program() { Width = 600, Height = 600 });
    }
}

Ответы (0 шт):