como mover um controle no mousemove em tempo de execução?

Eu tenho um aplicativo WinForm, estou tentando mover um pictureBox em um formulário usandoMouseMove Event, mas eu não consigo descobrir qual é o cálculo certo que devo fazer no MouseMove, quando eu em primeiro lugar o pictureBox, a sua localização muda de uma maneira sem sentido, em seguida, em mover o PictureBox Location move-se corretamente.

É um nome de painelOuterPanel que contém o pictureBoxpicBox, aqui o código im usando:

private void picBox_MouseMove(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        Point p = OuterPanel.PointToClient(MousePosition);
        picBox.Location = this.PointToClient(p);
    }
}

P.S: o objetivo é mover a imagem após o zoom, como o visualizador de fotos do Windows

Atualizar : ConvertFromChildToForm método

private Point ConvertFromChildToForm(int x, int y,Control control)
{
    Point p = new Point(x, y);
    control.Location = p;
    return p;
}

questionAnswers(3)

yourAnswerToTheQuestion