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.