Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/GradientChart.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/GradientChart.Designer.cs	(revision 14117)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/GradientChart.Designer.cs	(revision 14118)
@@ -89,4 +89,5 @@
       this.chart.TabIndex = 0;
       this.chart.SelectionRangeChanged += new System.EventHandler<System.Windows.Forms.DataVisualization.Charting.CursorEventArgs>(this.chart_SelectionRangeChanged);
+      this.chart.AnnotationPositionChanged += new System.EventHandler(this.chart_AnnotationPositionChanged);
       this.chart.AnnotationPositionChanging += new System.EventHandler<System.Windows.Forms.DataVisualization.Charting.AnnotationPositionChangingEventArgs>(this.chart_AnnotationPositionChanging);
       this.chart.DragDrop += new System.Windows.Forms.DragEventHandler(this.chart_DragDrop);
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/GradientChart.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/GradientChart.cs	(revision 14117)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/GradientChart.cs	(revision 14118)
@@ -267,23 +267,4 @@
       }
 
-      ResizeAllSeriesData();
-      OrderAndColorSeries();
-    }
-
-    public async Task RecalculateAsync(bool updateOnFinish = true, bool resetYAxis = true) {
-      if (IsDisposed
-        || sharedFixedVariables == null || !solutions.Any() || string.IsNullOrEmpty(freeVariable)
-        || trainingMin.IsAlmost(trainingMax) || trainingMin > trainingMax || drawingSteps == 0)
-        return;
-
-      calculationPendingTimer.Start();
-
-      Update(); // immediately show label
-
-      // cancel previous recalculate call
-      if (cancelCurrentRecalculateSource != null)
-        cancelCurrentRecalculateSource.Cancel();
-      cancelCurrentRecalculateSource = new CancellationTokenSource();
-
       // Set cursor and x-axis
       // Make sure to allow a small offset to be able to distinguish the vertical line annotation from the axis
@@ -302,9 +283,25 @@
         chart.ChartAreas[0].AxisX.Title = FreeVariable + " : " + defaultValue.ToString("N3", CultureInfo.CurrentCulture);
 
+      ResizeAllSeriesData();
+      OrderAndColorSeries();
+    }
+
+    public async Task RecalculateAsync(bool updateOnFinish = true, bool resetYAxis = true) {
+      if (IsDisposed
+        || sharedFixedVariables == null || !solutions.Any() || string.IsNullOrEmpty(freeVariable)
+        || trainingMin.IsAlmost(trainingMax) || trainingMin > trainingMax || drawingSteps == 0)
+        return;
+
+      calculationPendingTimer.Start();
+
+      // cancel previous recalculate call
+      if (cancelCurrentRecalculateSource != null)
+        cancelCurrentRecalculateSource.Cancel();
+      cancelCurrentRecalculateSource = new CancellationTokenSource();
+      var cancellationToken = cancelCurrentRecalculateSource.Token;
+
       // Update series
-      var cancellationToken = cancelCurrentRecalculateSource.Token;
       try {
         var limits = await UpdateAllSeriesDataAsync(cancellationToken);
-        //cancellationToken.ThrowIfCancellationRequested();
 
         yMin = limits.Lower;
@@ -453,13 +450,12 @@
           if (yvalues[i] > max) max = yvalues[i];
         }
+        chart.Invalidate();
+
+        cancellationToken.ThrowIfCancellationRequested();
 
         var confidenceBoundSolution = solution as IConfidenceRegressionSolution;
         if (confidenceBoundSolution != null) {
           var confidenceIntervalSeries = ciSeriesCache[solution];
-
-          cancellationToken.ThrowIfCancellationRequested();
-          var variances =
-            confidenceBoundSolution.Model.GetEstimatedVariances(internalDataset,
-              Enumerable.Range(0, internalDataset.Rows)).ToList();
+          var variances = confidenceBoundSolution.Model.GetEstimatedVariances(internalDataset, Enumerable.Range(0, internalDataset.Rows)).ToList();
           for (int i = 0; i < xvalues.Count; i++) {
             var lower = yvalues[i] - 1.96 * Math.Sqrt(variances[i]);
@@ -469,4 +465,5 @@
             if (upper > max) max = upper;
           }
+          chart.Invalidate();
         }
 
@@ -619,6 +616,12 @@
 
       e.NewLocationX = newLocation;
-      var annotation = VerticalLineAnnotation;
-      var x = annotation.X;
+
+      UpdateCursor();
+    }
+    private void chart_AnnotationPositionChanged(object sender, EventArgs e) {
+      UpdateCursor();
+    }
+    void UpdateCursor() {
+      var x = VerticalLineAnnotation.X;
       sharedFixedVariables.SetVariableValue(x, FreeVariable, 0);
 
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/GradientChartConfigurationDialog.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/GradientChartConfigurationDialog.cs	(revision 14117)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/GradientChartConfigurationDialog.cs	(revision 14118)
@@ -51,4 +51,5 @@
     private async void okButton_Click(object sender, System.EventArgs e) {
       try {
+        Enabled = false;
         chart.SuspendRepaint();
         if (xAutomaticCheckBox.Checked) {
@@ -82,4 +83,5 @@
       }
       finally {
+        Enabled = true;
         chart.ResumeRepaint(true);
       }
