Me respondo a mí mismo para decir que he cambiado el código por el siguiente:
protected override void OnMouseMove(MouseEventArgs e)
{
label_X.Text = Cursor.Position.X.ToString();
label_Y.Text = Cursor.Position.Y.ToString();
}
Con esto si me da las coordenadas verdaderas, pero solo se me actualiza mientras sobrevuelo el formulario, en cuanto me salgo las coordenadas se quedan congeladas.