Как увеличить масштаб с помощью мыши на этом изображении

У меня есть библиотека userControl, которая состоит из основной панели и PictureBox, я хочу создать масштабируемый инструмент PictureBox, я увеличиваю и уменьшаю масштаб с помощью события mouseWheel на главной панели, проблему, которую я не могу понять, как мне увеличивать в соответствии с положением мыши на изображении, поэтому всякий раз, когда я увеличиваю изображение, масштабирование переходит в верхний левый угол панели, так как мне это исправить?

private double ZOOMFACTOR = 1.15;   // = 15% smaller or larger
private int MINMAX = 5;
void picPanel_MouseWheel(object sender, MouseEventArgs e)
    {
        if (e.Delta > 0)
        {
            ZoomIn();
        }
        else
        {
            ZoomOut();
        }
    }

    private void ZoomIn()
    {
        if ((picBox.Width < (MINMAX * this.Width)) &&
            (picBox.Height < (MINMAX * this.Height)))
        {
            picBox.Width = Convert.ToInt32(picBox.Width * ZOOMFACTOR);
            picBox.Height = Convert.ToInt32(picBox.Height * ZOOMFACTOR);
        }
    } 
    private void picBox_MouseEnter(object sender, EventArgs e)
    {
        if (picBox.Focused) return;
        picBox.Focus();
    }

Update :

Я пробовал это, похоже, работает, но не совсем так, как должно быть !! Есть идеи?

    private void ZoomIn()
    {
        if ((picBox.Width < (MINMAX * this.Width)) &&
            (picBox.Height < (MINMAX * this.Height)))
        {
            picBox.Width = Convert.ToInt32(picBox.Width * ZOOMFACTOR);
            picBox.Height = Convert.ToInt32(picBox.Height * ZOOMFACTOR);

            Point p = this.AutoScrollPosition;
            int deltaX = e.X - p.X;
            int deltaY = e.Y - p.Y;
            this.AutoScrollPosition = new Point(deltaX, deltaY);
        }
    } 

Ответы на вопрос(2)

Ваш ответ на вопрос