Index: branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChart.Designer.cs
===================================================================
--- branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChart.Designer.cs	(revision 13817)
+++ branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChart.Designer.cs	(revision 13818)
@@ -48,4 +48,5 @@
       series1.Name = "Series1";
       this.Series.Add(series1);
+      this.AnnotationPositionChanged += new System.EventHandler(this.chart_AnnotationPositionChanged);
       this.AnnotationPositionChanging += new System.EventHandler<System.Windows.Forms.DataVisualization.Charting.AnnotationPositionChangingEventArgs>(this.chart_AnnotationPositionChanging);
       this.DragDrop += new System.Windows.Forms.DragEventHandler(this.GradientChart_DragDrop);
Index: branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChart.cs
===================================================================
--- branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChart.cs	(revision 13817)
+++ branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChart.cs	(revision 13818)
@@ -198,7 +198,5 @@
       if (internalDataset == null || solutionList == null || !solutionList.Any())
         return;
-      if (min.IsAlmost(max) || min > max)
-        return;
-      if (points == 0)
+      if (min.IsAlmost(max) || min > max || points == 0)
         return;
       Series.Clear();
@@ -207,4 +205,12 @@
       Annotations.Clear();
       Annotations.Add(vla);
+      double axisMin, axisMax, axisInterval;
+      // calculate X-axis interval
+      ChartUtil.CalculateAxisInterval(min, max, 5, out axisMin, out axisMax, out axisInterval);
+      var axis = ChartAreas[0].AxisX;
+      axis.Minimum = axisMin;
+      axis.Maximum = axisMax;
+      axis.Interval = axisInterval;
+
       for (int i = 0; i < solutionList.Count; ++i) {
         var solution = solutionList[i];
@@ -214,19 +220,18 @@
         var p = series.Points.Last();
         vla.X = p.XValue;
-        ChartAreas[0].AxisX.Title = Variable + " " + vla.X.ToString("N3", CultureInfo.CurrentCulture);
-        //        var ta = new TextAnnotation {
-        //          Text = string.Format("X: {0:0.000}, Y: {1:0.000}", p.XValue, p.YValues[0]),
-        //          Visible = true,
-        //          X = p.XValue,
-        //          Y = p.YValues[0],
-        //          AxisX = ChartAreas[0].AxisX,
-        //          AxisY = ChartAreas[0].AxisY
-        //        };
-        //        ta.ClipToChartArea = "ChartArea1";
-        //        ta.Name = series.Name;
-        //        Annotations.Add(ta);
-      }
-      CalculateAxisInterval();
-      AddStripLines();
+      }
+      // calculate Y-axis interval
+      double ymin = 0, ymax = 0;
+      foreach (var v in Series[0].Points.Select(x => x.YValues[0])) {
+        if (ymin > v) ymin = v;
+        if (ymax < v) ymax = v;
+      }
+      ChartUtil.CalculateAxisInterval(ymin, ymax, 5, out axisMin, out axisMax, out axisInterval);
+      axis = ChartAreas[0].AxisY;
+      axis.Minimum = axisMin;
+      axis.Maximum = axisMax;
+      axis.Interval = axisInterval;
+      ChartAreas[0].AxisX.Title = Variable + " : " + vla.X.ToString("N3", CultureInfo.CurrentCulture); // set axis titlet
+      AddStripLines(); // add strip lines
       if (ShowLegend)
         AddLegends();
@@ -311,24 +316,4 @@
     }
 
-    private void CalculateAxisInterval() {
-      double axisMin, axisMax, axisInterval;
-      ChartUtil.CalculateAxisInterval(min, max, 5, out axisMin, out axisMax, out axisInterval);
-      var axis = ChartAreas[0].AxisX;
-      axis.Minimum = axisMin;
-      axis.Maximum = axisMax;
-      axis.Interval = axisInterval;
-
-      double ymin = 0, ymax = 0;
-      foreach (var v in Series[0].Points.Select(x => x.YValues[0])) {
-        if (ymin > v) ymin = v;
-        if (ymax < v) ymax = v;
-      }
-      ChartUtil.CalculateAxisInterval(ymin, ymax, 5, out axisMin, out axisMax, out axisInterval);
-      axis = ChartAreas[0].AxisY;
-      axis.Minimum = axisMin;
-      axis.Maximum = axisMax;
-      axis.Interval = axisInterval;
-    }
-
     private void RegisterEvents() {
       AnnotationPositionChanging += chart_AnnotationPositionChanging;
@@ -352,14 +337,18 @@
     }
 
-    //    private void chart_AnnotationPositionChanged(object sender, EventArgs e) {
-    //      var a = Annotations[0];
-    //      var x = a.X;
-    //      var s = Series[0];
-    //      var n = s.Points.Count;
-    //      var y = GetEstimatedValue(x);
-    //      s.Points[n - 1] = new DataPoint(x, y) { MarkerColor = Color.Red, MarkerSize = 5 };
-    //      a.TextStyle = TextStyle.Default;
-    //      Refresh();
-    //    }
+    private void chart_AnnotationPositionChanged(object sender, EventArgs e) {
+      var annotation = VerticalLineAnnotation;
+      var x = annotation.X;
+      internalDataset.SetVariableValue(x, Variable, 0);
+      for (int i = 0; i < solutionList.Count; ++i) {
+        var y = GetEstimatedValue(solutionList[i], x);
+        var s = Series[i];
+        var n = s.Points.Count;
+        s.Points[n - 1] = new DataPoint(x, y) { MarkerColor = Color.Red, MarkerSize = 5 };
+      }
+      ChartAreas[0].AxisX.Title = Variable + " : " + x.ToString("N3", CultureInfo.CurrentCulture);
+      Update();
+      OnVariableValueChanged(this, EventArgs.Empty);
+    }
 
     private void chart_AnnotationPositionChanging(object sender, AnnotationPositionChangingEventArgs e) {
@@ -371,15 +360,15 @@
       if (e.NewLocationX < axisX.Minimum)
         e.NewLocationX = axisX.Minimum;
-      var x = e.NewLocationX;
-      internalDataset.SetVariableValue(x, Variable, 0);
-      for (int i = 0; i < solutionList.Count; ++i) {
-        var y = GetEstimatedValue(solutionList[i], x);
-        var s = Series[i];
-        var n = s.Points.Count;
-        s.Points[n - 1] = new DataPoint(x, y) { MarkerColor = Color.Red, MarkerSize = 5 };
-      }
-      ChartAreas[0].AxisX.Title = Variable + " : " + x.ToString("N3", CultureInfo.CurrentCulture);
-      Update();
-      OnVariableValueChanged(this, EventArgs.Empty);
+      //      var x = e.NewLocationX;
+      //      internalDataset.SetVariableValue(x, Variable, 0);
+      //      for (int i = 0; i < solutionList.Count; ++i) {
+      //        var y = GetEstimatedValue(solutionList[i], x);
+      //        var s = Series[i];
+      //        var n = s.Points.Count;
+      //        s.Points[n - 1] = new DataPoint(x, y) { MarkerColor = Color.Red, MarkerSize = 5 };
+      //      }
+      //      ChartAreas[0].AxisX.Title = Variable + " : " + x.ToString("N3", CultureInfo.CurrentCulture);
+      //      Update();
+      //      OnVariableValueChanged(this, EventArgs.Empty);
     }
 
Index: branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/RegressionSolutionTargetResponseGradientView.cs
===================================================================
--- branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/RegressionSolutionTargetResponseGradientView.cs	(revision 13817)
+++ branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/RegressionSolutionTargetResponseGradientView.cs	(revision 13818)
@@ -33,5 +33,4 @@
     private ModifiableDataset internalDataset;
     private Dictionary<string, GradientChart> charts;
-    private Dictionary<string, DoubleLimit> variableLimits;
 
     private const int Points = 1000;
@@ -75,5 +74,4 @@
       // update charts and variable limits
       charts = new Dictionary<string, GradientChart>();
-      variableLimits = new Dictionary<string, DoubleLimit>();
       foreach (var x in pd.AllowedInputVariables) {
         double min = 0, max = 0;
@@ -82,5 +80,4 @@
           if (v < min) min = v;
         }
-        variableLimits[x] = new DoubleLimit(min, max);
         var gradientChart = new GradientChart { Dock = DockStyle.Fill, ShowLegend = false, Margin = Padding.Empty };
         gradientChart.VariableValueChanged += (o, e) => {
