С#: простой и функциональный способ масштабирования изображений с помощью полос прокрутки

Есть ли простой и функциональный способ масштабирования изображения в окне изображения, включая полосы прокрутки?

В настоящий момент я использую окно с изображением на панели с автоматическим прокруткой. Чтобы увеличить масштаб, я увеличиваю изображение и перемещаю его с помощью полос прокрутки на панели. Проблема в том, что она ведет себя странно. Например: если вы приближаетесь к дальнему, граница между верхней и левой границей формы и изображением становится все больше и больше.

Это метод масштабирования. Я получил его от здесь.

private void ZoomInOut(bool zoom)
    {
        //Zoom ratio by which the images will be zoomed by default
        int zoomRatio = 10;
        //Set the zoomed width and height
        int widthZoom = pictureBox_viewer.Width * zoomRatio / 100;
        int heightZoom = pictureBox_viewer.Height * zoomRatio / 100;
        //zoom = true --> zoom in
        //zoom = false --> zoom out
        if (!zoom)
        {
            widthZoom *= -1;
            heightZoom *= -1;
        }
        //Add the width and height to the picture box dimensions
        pictureBox_viewer.Width += widthZoom;
        pictureBox_viewer.Height += heightZoom;

    }

Любая помощь приветствуется.

Спасибо заранее.

Marco

EDIT: Два снимка экрана без увеличения и увеличения (16 раз). Обратите внимание на границу между верхней границей изображения и верхней границей формы. UnzoomedImageZoomedImage