Index: /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/DensityTrackbar.cs
===================================================================
--- /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/DensityTrackbar.cs	(revision 13852)
+++ /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/DensityTrackbar.cs	(revision 13853)
@@ -22,4 +22,5 @@
 using System;
 using System.Collections.Generic;
+using System.Drawing;
 using System.Globalization;
 using System.Windows.Forms;
@@ -91,4 +92,5 @@
       trackBar.Enabled = !Checked;
       textBox.Text = Checked ? "Plotted" : Value.ToString(CultureInfo.InvariantCulture);
+      radioButton.BackColor = Checked ? SystemColors.ActiveCaption : SystemColors.Control;
       OnCheckedChanged();
     }
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 13852)
+++ /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChart.Designer.cs	(revision 13853)
@@ -30,8 +30,26 @@
       System.Windows.Forms.DataVisualization.Charting.StripLine stripLine2 = new System.Windows.Forms.DataVisualization.Charting.StripLine();
       System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+      this.calculationPendingLabel = new System.Windows.Forms.Label();
+      this.calculationPendingTimer = new System.Windows.Forms.Timer(this.components);
       this.chart = new HeuristicLab.Visualization.ChartControlsExtensions.EnhancedChart();
-      this.statusLabel = new System.Windows.Forms.Label();
       ((System.ComponentModel.ISupportInitialize)(this.chart)).BeginInit();
       this.SuspendLayout();
+      // 
+      // calculationPendingLabel
+      // 
+      this.calculationPendingLabel.BackColor = System.Drawing.Color.White;
+      this.calculationPendingLabel.Image = HeuristicLab.Common.Resources.VSImageLibrary.Timer;
+      this.calculationPendingLabel.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+      this.calculationPendingLabel.Location = new System.Drawing.Point(3, 3);
+      this.calculationPendingLabel.Margin = new System.Windows.Forms.Padding(0);
+      this.calculationPendingLabel.Name = "calculationPendingLabel";
+      this.calculationPendingLabel.Size = new System.Drawing.Size(17, 17);
+      this.calculationPendingLabel.TabIndex = 1;
+      this.calculationPendingLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+      this.calculationPendingLabel.Visible = false;
+      // 
+      // calculationPendingTimer
+      // 
+      this.calculationPendingTimer.Tick += new System.EventHandler(this.calculationPendingTimer_Tick);
       // 
       // chart
@@ -68,21 +86,7 @@
       this.chart.TabIndex = 0;
       this.chart.AnnotationPositionChanging += new System.EventHandler<System.Windows.Forms.DataVisualization.Charting.AnnotationPositionChangingEventArgs>(this.chart_AnnotationPositionChanging);
-      this.chart.FormatNumber += new System.EventHandler<System.Windows.Forms.DataVisualization.Charting.FormatNumberEventArgs>(this.chart_FormatNumber);
       this.chart.DragDrop += new System.Windows.Forms.DragEventHandler(this.chart_DragDrop);
       this.chart.DragEnter += new System.Windows.Forms.DragEventHandler(this.chart_DragEnter);
       this.chart.MouseMove += new System.Windows.Forms.MouseEventHandler(this.chart_MouseMove);
-      // 
-      // statusLabel
-      // 
-      this.statusLabel.BackColor = System.Drawing.Color.White;
-      this.statusLabel.Image = HeuristicLab.Common.Resources.VSImageLibrary.Timer;
-      this.statusLabel.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      this.statusLabel.Location = new System.Drawing.Point(3, 3);
-      this.statusLabel.Margin = new System.Windows.Forms.Padding(0);
-      this.statusLabel.Name = "statusLabel";
-      this.statusLabel.Size = new System.Drawing.Size(17, 17);
-      this.statusLabel.TabIndex = 1;
-      this.statusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
-      this.statusLabel.Visible = false;
       // 
       // GradientChart
@@ -90,5 +94,5 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.statusLabel);
+      this.Controls.Add(this.calculationPendingLabel);
       this.Controls.Add(this.chart);
       this.Name = "GradientChart";
@@ -102,5 +106,6 @@
 
     private HeuristicLab.Visualization.ChartControlsExtensions.EnhancedChart chart;
-    private System.Windows.Forms.Label statusLabel;
+    private System.Windows.Forms.Label calculationPendingLabel;
+    private System.Windows.Forms.Timer calculationPendingTimer;
   }
 }
Index: /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChart.cs
===================================================================
--- /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChart.cs	(revision 13852)
+++ /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChart.cs	(revision 13853)
@@ -44,4 +44,7 @@
     private readonly Dictionary<IRegressionSolution, Series> ciSeriesCache;
 
+    private readonly ToolStripMenuItem configToolStripMenuItem;
+    private readonly GradientChartConfigurationDialog configurationDialog;
+
     #region Properties
     public bool ShowLegend {
@@ -49,15 +52,10 @@
       set { chart.Legends[0].Enabled = value; }
     }
-    public bool ShowXAxisLabel {
-      get { return chart.ChartAreas[0].AxisX.Enabled == AxisEnabled.True; }
-      set { chart.ChartAreas[0].AxisX.Enabled = value ? AxisEnabled.True : AxisEnabled.False; }
-    }
-    public bool ShowYAxisLabel {
-      get { return chart.ChartAreas[0].AxisY.Enabled == AxisEnabled.True; }
-      set { chart.ChartAreas[0].AxisY.Enabled = value ? AxisEnabled.True : AxisEnabled.False; }
-    }
     public bool ShowCursor {
       get { return chart.Annotations[0].Visible; }
-      set { chart.Annotations[0].Visible = value; }
+      set {
+        chart.Annotations[0].Visible = value;
+        if (!value) chart.ChartAreas[0].AxisX.Title = string.Empty;
+      }
     }
 
@@ -191,6 +189,14 @@
       chart.ChartAreas[0].CursorY.Interval = 0;
 
+      configToolStripMenuItem = new ToolStripMenuItem("Configuration");
+      configToolStripMenuItem.Click += configToolStripMenuItem_Click;
+      chart.ContextMenuStrip.Items.Add(new ToolStripSeparator());
+      chart.ContextMenuStrip.Items.Add(configToolStripMenuItem);
+
+      configurationDialog = new GradientChartConfigurationDialog(this);
+
       Disposed += GradientChart_Disposed;
     }
+
     private void GradientChart_Disposed(object sender, EventArgs e) {
       if (cancelCurrentRecalculateSource != null)
@@ -237,5 +243,6 @@
         return;
 
-      statusLabel.Visible = true;
+      calculationPendingTimer.Start();
+
       Update(); // immediately show label
 
@@ -248,5 +255,6 @@
       var defaultValue = sharedFixedVariables.GetDoubleValue(freeVariable, 0);
       VerticalLineAnnotation.X = defaultValue;
-      chart.ChartAreas[0].AxisX.Title = FreeVariable + " : " + defaultValue.ToString("N3", CultureInfo.CurrentCulture);
+      if (ShowCursor)
+        chart.ChartAreas[0].AxisX.Title = FreeVariable + " : " + defaultValue.ToString("N3", CultureInfo.CurrentCulture);
 
       // Update series
@@ -264,5 +272,6 @@
         UpdateOutOfTrainingRangeStripLines();
 
-        statusLabel.Visible = false;
+        calculationPendingTimer.Stop();
+        calculationPendingLabel.Visible = false;
         if (updateOnFinish)
           Update();
@@ -437,4 +446,5 @@
       var series = seriesCache[solution];
       series.Points.SuspendUpdates();
+      series.Points.Clear();
       for (int i = 0; i < xvalues.Count; i++)
         series.Points.Add(new DataPoint(xvalues[i], 0.0));
@@ -444,4 +454,5 @@
       if (ciSeriesCache.TryGetValue(solution, out confidenceIntervalSeries)) {
         confidenceIntervalSeries.Points.SuspendUpdates();
+        confidenceIntervalSeries.Points.Clear();
         for (int i = 0; i < xvalues.Count; i++)
           confidenceIntervalSeries.Points.Add(new DataPoint(xvalues[i], new[] { -1.0, 1.0 }));
@@ -538,5 +549,9 @@
         newLocation = axisX.Minimum;
 
+      if (oldCurserPosition.IsAlmost(newLocation))
+        return;
+
       e.NewLocationX = newLocation;
+      oldCurserPosition = e.NewLocationX;
 
       var annotation = VerticalLineAnnotation;
@@ -544,10 +559,10 @@
       sharedFixedVariables.SetVariableValue(x, FreeVariable, 0);
 
-      chart.ChartAreas[0].AxisX.Title = FreeVariable + " : " + x.ToString("N3", CultureInfo.CurrentCulture);
-      chart.Update();
-
-      if (!oldCurserPosition.IsAlmost(e.NewLocationX))
-        OnVariableValueChanged(this, EventArgs.Empty);
-      oldCurserPosition = e.NewLocationX;
+      if (ShowCursor) {
+        chart.ChartAreas[0].AxisX.Title = FreeVariable + " : " + x.ToString("N3", CultureInfo.CurrentCulture);
+        chart.Update();
+      }
+
+      OnVariableValueChanged(this, EventArgs.Empty);
     }
 
@@ -555,19 +570,4 @@
       bool hitCursor = chart.HitTest(e.X, e.Y).ChartElementType == ChartElementType.Annotation;
       chart.Cursor = hitCursor ? Cursors.VSplit : Cursors.Default;
-    }
-
-    private void chart_FormatNumber(object sender, FormatNumberEventArgs e) {
-      if (e.ElementType == ChartElementType.AxisLabels) {
-        switch (e.Format) {
-          case "CustomAxisXFormat":
-            break;
-          case "CustomAxisYFormat":
-            var v = e.Value;
-            e.LocalizedValue = string.Format("{0,5}", v);
-            break;
-          default:
-            break;
-        }
-      }
     }
 
@@ -590,4 +590,13 @@
       }
     }
+
+    private void calculationPendingTimer_Tick(object sender, EventArgs e) {
+      calculationPendingLabel.Visible = true;
+      Update();
+    }
+
+    private void configToolStripMenuItem_Click(object sender, EventArgs e) {
+      configurationDialog.ShowDialog(this);
+    }
     #endregion
   }
Index: /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChartConfigurationDialog.Designer.cs
===================================================================
--- /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChartConfigurationDialog.Designer.cs	(revision 13853)
+++ /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChartConfigurationDialog.Designer.cs	(revision 13853)
@@ -0,0 +1,305 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Problems.DataAnalysis.Views {
+  partial class GradientChartConfigurationDialog {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.xAxisGroupBox = new System.Windows.Forms.GroupBox();
+      this.maxXTextBox = new System.Windows.Forms.TextBox();
+      this.minXTextBox = new System.Windows.Forms.TextBox();
+      this.maxXLabel = new System.Windows.Forms.Label();
+      this.minXLabel = new System.Windows.Forms.Label();
+      this.yAxisGroupBox = new System.Windows.Forms.GroupBox();
+      this.maxYTextBox = new System.Windows.Forms.TextBox();
+      this.yAutomaticCheckBox = new System.Windows.Forms.CheckBox();
+      this.minYTextBox = new System.Windows.Forms.TextBox();
+      this.maxYLabel = new System.Windows.Forms.Label();
+      this.minYLabel = new System.Windows.Forms.Label();
+      this.miscGroupBox = new System.Windows.Forms.GroupBox();
+      this.stepsLabel = new System.Windows.Forms.Label();
+      this.applyButton = new System.Windows.Forms.Button();
+      this.cancelButton = new System.Windows.Forms.Button();
+      this.xAutomaticCheckBox = new System.Windows.Forms.CheckBox();
+      this.StepsNumericUpDown = new System.Windows.Forms.NumericUpDown();
+      this.xAxisGroupBox.SuspendLayout();
+      this.yAxisGroupBox.SuspendLayout();
+      this.miscGroupBox.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.StepsNumericUpDown)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // xAxisGroupBox
+      // 
+      this.xAxisGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.xAxisGroupBox.Controls.Add(this.maxXTextBox);
+      this.xAxisGroupBox.Controls.Add(this.xAutomaticCheckBox);
+      this.xAxisGroupBox.Controls.Add(this.minXTextBox);
+      this.xAxisGroupBox.Controls.Add(this.maxXLabel);
+      this.xAxisGroupBox.Controls.Add(this.minXLabel);
+      this.xAxisGroupBox.Location = new System.Drawing.Point(12, 12);
+      this.xAxisGroupBox.Name = "xAxisGroupBox";
+      this.xAxisGroupBox.Size = new System.Drawing.Size(234, 78);
+      this.xAxisGroupBox.TabIndex = 1;
+      this.xAxisGroupBox.TabStop = false;
+      this.xAxisGroupBox.Text = "X-Axis";
+      // 
+      // maxXTextBox
+      // 
+      this.maxXTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.maxXTextBox.Location = new System.Drawing.Point(61, 45);
+      this.maxXTextBox.Name = "maxXTextBox";
+      this.maxXTextBox.Size = new System.Drawing.Size(167, 20);
+      this.maxXTextBox.TabIndex = 3;
+      // 
+      // minXTextBox
+      // 
+      this.minXTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.minXTextBox.Location = new System.Drawing.Point(61, 19);
+      this.minXTextBox.Name = "minXTextBox";
+      this.minXTextBox.Size = new System.Drawing.Size(167, 20);
+      this.minXTextBox.TabIndex = 2;
+      // 
+      // maxXLabel
+      // 
+      this.maxXLabel.AutoSize = true;
+      this.maxXLabel.Location = new System.Drawing.Point(7, 48);
+      this.maxXLabel.Name = "maxXLabel";
+      this.maxXLabel.Size = new System.Drawing.Size(27, 13);
+      this.maxXLabel.TabIndex = 1;
+      this.maxXLabel.Text = "Max";
+      // 
+      // minXLabel
+      // 
+      this.minXLabel.AutoSize = true;
+      this.minXLabel.Location = new System.Drawing.Point(7, 22);
+      this.minXLabel.Name = "minXLabel";
+      this.minXLabel.Size = new System.Drawing.Size(24, 13);
+      this.minXLabel.TabIndex = 0;
+      this.minXLabel.Text = "Min";
+      // 
+      // yAxisGroupBox
+      // 
+      this.yAxisGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.yAxisGroupBox.Controls.Add(this.maxYTextBox);
+      this.yAxisGroupBox.Controls.Add(this.yAutomaticCheckBox);
+      this.yAxisGroupBox.Controls.Add(this.minYTextBox);
+      this.yAxisGroupBox.Controls.Add(this.maxYLabel);
+      this.yAxisGroupBox.Controls.Add(this.minYLabel);
+      this.yAxisGroupBox.Location = new System.Drawing.Point(13, 96);
+      this.yAxisGroupBox.Name = "yAxisGroupBox";
+      this.yAxisGroupBox.Size = new System.Drawing.Size(234, 75);
+      this.yAxisGroupBox.TabIndex = 2;
+      this.yAxisGroupBox.TabStop = false;
+      this.yAxisGroupBox.Text = "Y-Axis";
+      // 
+      // maxYTextBox
+      // 
+      this.maxYTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.maxYTextBox.Location = new System.Drawing.Point(61, 45);
+      this.maxYTextBox.Name = "maxYTextBox";
+      this.maxYTextBox.Size = new System.Drawing.Size(167, 20);
+      this.maxYTextBox.TabIndex = 3;
+      // 
+      // yAutomaticCheckBox
+      // 
+      this.yAutomaticCheckBox.AutoSize = true;
+      this.yAutomaticCheckBox.Location = new System.Drawing.Point(47, -1);
+      this.yAutomaticCheckBox.Name = "yAutomaticCheckBox";
+      this.yAutomaticCheckBox.Size = new System.Drawing.Size(73, 17);
+      this.yAutomaticCheckBox.TabIndex = 1;
+      this.yAutomaticCheckBox.Text = "Automatic";
+      this.yAutomaticCheckBox.UseVisualStyleBackColor = true;
+      this.yAutomaticCheckBox.CheckedChanged += new System.EventHandler(this.automaticCheckBox_CheckedChanged);
+      // 
+      // minYTextBox
+      // 
+      this.minYTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.minYTextBox.Location = new System.Drawing.Point(61, 19);
+      this.minYTextBox.Name = "minYTextBox";
+      this.minYTextBox.Size = new System.Drawing.Size(167, 20);
+      this.minYTextBox.TabIndex = 2;
+      // 
+      // maxYLabel
+      // 
+      this.maxYLabel.AutoSize = true;
+      this.maxYLabel.Location = new System.Drawing.Point(7, 48);
+      this.maxYLabel.Name = "maxYLabel";
+      this.maxYLabel.Size = new System.Drawing.Size(27, 13);
+      this.maxYLabel.TabIndex = 1;
+      this.maxYLabel.Text = "Max";
+      // 
+      // minYLabel
+      // 
+      this.minYLabel.AutoSize = true;
+      this.minYLabel.Location = new System.Drawing.Point(7, 22);
+      this.minYLabel.Name = "minYLabel";
+      this.minYLabel.Size = new System.Drawing.Size(24, 13);
+      this.minYLabel.TabIndex = 0;
+      this.minYLabel.Text = "Min";
+      // 
+      // miscGroupBox
+      // 
+      this.miscGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.miscGroupBox.Controls.Add(this.StepsNumericUpDown);
+      this.miscGroupBox.Controls.Add(this.stepsLabel);
+      this.miscGroupBox.Location = new System.Drawing.Point(13, 177);
+      this.miscGroupBox.Name = "miscGroupBox";
+      this.miscGroupBox.Size = new System.Drawing.Size(233, 53);
+      this.miscGroupBox.TabIndex = 4;
+      this.miscGroupBox.TabStop = false;
+      // 
+      // stepsLabel
+      // 
+      this.stepsLabel.AutoSize = true;
+      this.stepsLabel.Location = new System.Drawing.Point(6, 22);
+      this.stepsLabel.Name = "stepsLabel";
+      this.stepsLabel.Size = new System.Drawing.Size(34, 13);
+      this.stepsLabel.TabIndex = 1;
+      this.stepsLabel.Text = "Steps";
+      // 
+      // applyButton
+      // 
+      this.applyButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.applyButton.Location = new System.Drawing.Point(91, 239);
+      this.applyButton.Name = "applyButton";
+      this.applyButton.Size = new System.Drawing.Size(75, 23);
+      this.applyButton.TabIndex = 5;
+      this.applyButton.Text = "Apply";
+      this.applyButton.UseVisualStyleBackColor = true;
+      this.applyButton.Click += new System.EventHandler(this.okButton_Click);
+      // 
+      // cancelButton
+      // 
+      this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+      this.cancelButton.Location = new System.Drawing.Point(172, 239);
+      this.cancelButton.Name = "cancelButton";
+      this.cancelButton.Size = new System.Drawing.Size(75, 23);
+      this.cancelButton.TabIndex = 6;
+      this.cancelButton.Text = "Cancel";
+      this.cancelButton.UseVisualStyleBackColor = true;
+      // 
+      // xAutomaticCheckBox
+      // 
+      this.xAutomaticCheckBox.AutoSize = true;
+      this.xAutomaticCheckBox.Location = new System.Drawing.Point(48, -1);
+      this.xAutomaticCheckBox.Name = "xAutomaticCheckBox";
+      this.xAutomaticCheckBox.Size = new System.Drawing.Size(73, 17);
+      this.xAutomaticCheckBox.TabIndex = 1;
+      this.xAutomaticCheckBox.Text = "Automatic";
+      this.xAutomaticCheckBox.UseVisualStyleBackColor = true;
+      this.xAutomaticCheckBox.CheckedChanged += new System.EventHandler(this.automaticCheckBox_CheckedChanged);
+      // 
+      // StepsNumericUpDown
+      // 
+      this.StepsNumericUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.StepsNumericUpDown.Increment = new decimal(new int[] {
+            50,
+            0,
+            0,
+            0});
+      this.StepsNumericUpDown.Location = new System.Drawing.Point(61, 20);
+      this.StepsNumericUpDown.Maximum = new decimal(new int[] {
+            100000,
+            0,
+            0,
+            0});
+      this.StepsNumericUpDown.Name = "StepsNumericUpDown";
+      this.StepsNumericUpDown.Size = new System.Drawing.Size(166, 20);
+      this.StepsNumericUpDown.TabIndex = 4;
+      // 
+      // GradientChartConfigurationDialog
+      // 
+      this.AcceptButton = this.applyButton;
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+      this.CancelButton = this.cancelButton;
+      this.ClientSize = new System.Drawing.Size(258, 272);
+      this.ControlBox = false;
+      this.Controls.Add(this.cancelButton);
+      this.Controls.Add(this.applyButton);
+      this.Controls.Add(this.miscGroupBox);
+      this.Controls.Add(this.xAxisGroupBox);
+      this.Controls.Add(this.yAxisGroupBox);
+      this.Name = "GradientChartConfigurationDialog";
+      this.Text = "Configure Gradient Chart";
+      this.TopMost = true;
+      this.Shown += new System.EventHandler(this.GradientChartConfigurationDialog_Shown);
+      this.xAxisGroupBox.ResumeLayout(false);
+      this.xAxisGroupBox.PerformLayout();
+      this.yAxisGroupBox.ResumeLayout(false);
+      this.yAxisGroupBox.PerformLayout();
+      this.miscGroupBox.ResumeLayout(false);
+      this.miscGroupBox.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.StepsNumericUpDown)).EndInit();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.GroupBox xAxisGroupBox;
+    private System.Windows.Forms.TextBox maxXTextBox;
+    private System.Windows.Forms.TextBox minXTextBox;
+    private System.Windows.Forms.Label maxXLabel;
+    private System.Windows.Forms.Label minXLabel;
+    private System.Windows.Forms.GroupBox yAxisGroupBox;
+    private System.Windows.Forms.TextBox maxYTextBox;
+    private System.Windows.Forms.CheckBox yAutomaticCheckBox;
+    private System.Windows.Forms.TextBox minYTextBox;
+    private System.Windows.Forms.Label maxYLabel;
+    private System.Windows.Forms.Label minYLabel;
+    private System.Windows.Forms.GroupBox miscGroupBox;
+    private System.Windows.Forms.Label stepsLabel;
+    private System.Windows.Forms.Button applyButton;
+    private System.Windows.Forms.Button cancelButton;
+    private System.Windows.Forms.CheckBox xAutomaticCheckBox;
+    private System.Windows.Forms.NumericUpDown StepsNumericUpDown;
+  }
+}
Index: /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChartConfigurationDialog.cs
===================================================================
--- /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChartConfigurationDialog.cs	(revision 13853)
+++ /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChartConfigurationDialog.cs	(revision 13853)
@@ -0,0 +1,99 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Globalization;
+using System.Windows.Forms;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Problems.DataAnalysis.Views {
+  public partial class GradientChartConfigurationDialog : Form {
+    private readonly GradientChart chart;
+
+    private IFormatProvider FormatProvider {
+      get { return CultureInfo.CurrentUICulture.NumberFormat; }
+    }
+
+    public GradientChartConfigurationDialog(GradientChart chart) {
+      this.chart = chart;
+      InitializeComponent();
+    }
+
+    private void GradientChartConfigurationDialog_Shown(object sender, EventArgs e) {
+      if (chart.FixedXAxisMin.HasValue && chart.FixedXAxisMax.HasValue) {
+        xAutomaticCheckBox.Checked = false;
+        minXTextBox.Text = chart.FixedXAxisMin.Value.ToString(FormatProvider);
+        maxXTextBox.Text = chart.FixedXAxisMax.Value.ToString(FormatProvider);
+      } else xAutomaticCheckBox.Checked = true;
+      if (chart.FixedYAxisMin.HasValue && chart.FixedYAxisMax.HasValue) {
+        yAutomaticCheckBox.Checked = false;
+        minYTextBox.Text = chart.FixedYAxisMin.Value.ToString(FormatProvider);
+        maxYTextBox.Text = chart.FixedYAxisMax.Value.ToString(FormatProvider);
+      } else yAutomaticCheckBox.Checked = true;
+      StepsNumericUpDown.Value = chart.DrawingSteps;
+    }
+
+    private async void okButton_Click(object sender, System.EventArgs e) {
+      try {
+        chart.SuspendRepaint();
+        if (xAutomaticCheckBox.Checked) {
+          chart.FixedXAxisMin = null;
+          chart.FixedXAxisMax = null;
+        } else {
+          var min = Convert.ToDouble(minXTextBox.Text, FormatProvider);
+          var max = Convert.ToDouble(maxXTextBox.Text, FormatProvider);
+          chart.FixedXAxisMin = min;
+          chart.FixedXAxisMax = max;
+        }
+
+        if (yAutomaticCheckBox.Checked) {
+          chart.FixedYAxisMin = null;
+          chart.FixedYAxisMax = null;
+        } else {
+          var min = Convert.ToDouble(minYTextBox.Text, FormatProvider);
+          var max = Convert.ToDouble(maxYTextBox.Text, FormatProvider);
+          chart.FixedYAxisMin = min;
+          chart.FixedYAxisMax = max;
+        }
+
+        chart.DrawingSteps = (int)StepsNumericUpDown.Value;
+
+        await chart.RecalculateAsync(resetYAxis: false);
+
+        Close();
+      }
+      catch (FormatException fe) {
+        MessageBox.Show(this, "Illegal number format: {0}", fe.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);
+      }
+      finally {
+        chart.ResumeRepaint(true);
+      }
+    }
+
+    private void automaticCheckBox_CheckedChanged(object sender, EventArgs e) {
+      minXTextBox.Enabled = !xAutomaticCheckBox.Checked;
+      maxXTextBox.Enabled = !xAutomaticCheckBox.Checked;
+
+      minYTextBox.Enabled = !yAutomaticCheckBox.Checked;
+      maxYTextBox.Enabled = !yAutomaticCheckBox.Checked;
+    }
+  }
+}
Index: /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj
===================================================================
--- /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj	(revision 13852)
+++ /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj	(revision 13853)
@@ -282,4 +282,10 @@
     <Compile Include="GradientChart.Designer.cs">
       <DependentUpon>GradientChart.cs</DependentUpon>
+    </Compile>
+    <Compile Include="GradientChartConfigurationDialog.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="GradientChartConfigurationDialog.Designer.cs">
+      <DependentUpon>GradientChartConfigurationDialog.cs</DependentUpon>
     </Compile>
     <Compile Include="Regression\RegressionSolutionGradientView.cs">
Index: /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionGradientView.Designer.cs
===================================================================
--- /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionGradientView.Designer.cs	(revision 13852)
+++ /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionGradientView.Designer.cs	(revision 13853)
@@ -81,7 +81,5 @@
       this.gradientChart.Name = "gradientChart";
       this.gradientChart.ShowCursor = false;
-      this.gradientChart.ShowLegend = true;
-      this.gradientChart.ShowXAxisLabel = false;
-      this.gradientChart.ShowYAxisLabel = true;
+      this.gradientChart.ShowLegend = false;
       this.gradientChart.Size = new System.Drawing.Size(715, 376);
       this.gradientChart.TabIndex = 0;
Index: /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionGradientView.cs
===================================================================
--- /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionGradientView.cs	(revision 13852)
+++ /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionGradientView.cs	(revision 13853)
@@ -110,4 +110,19 @@
       tableLayoutPanel.ResumeRepaint(true);
 
+      // Init Y-axis range
+      var problemData = Content.ProblemData;
+      double min = double.MaxValue, max = double.MinValue;
+      var trainingTarget = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, problemData.TrainingIndices);
+      foreach (var t in trainingTarget) {
+        if (t < min) min = t;
+        if (t > max) max = t;
+      }
+      double range = max - min;
+      const double scale = 1.0 / 3.0;
+      double axisMin, axisMax, axisInterval;
+      ChartUtil.CalculateAxisInterval(min - scale * range, max + scale * range, 5, out axisMin, out axisMax, out axisInterval);
+      gradientChart.FixedYAxisMin = axisMin;
+      gradientChart.FixedYAxisMax = axisMax;
+
       trackbars.First().Checked = true;
     }
Index: /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionTargetResponseGradientView.Designer.cs
===================================================================
--- /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionTargetResponseGradientView.Designer.cs	(revision 13852)
+++ /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionTargetResponseGradientView.Designer.cs	(revision 13853)
@@ -50,5 +50,5 @@
       this.variableListView.Location = new System.Drawing.Point(3, 16);
       this.variableListView.Name = "variableListView";
-      this.variableListView.Size = new System.Drawing.Size(163, 482);
+      this.variableListView.Size = new System.Drawing.Size(163, 503);
       this.variableListView.TabIndex = 0;
       this.variableListView.UseCompatibleStateImageBehavior = false;
@@ -77,5 +77,5 @@
       this.yAxisConfigGroupBox.Location = new System.Drawing.Point(0, 0);
       this.yAxisConfigGroupBox.Name = "yAxisConfigGroupBox";
-      this.yAxisConfigGroupBox.Size = new System.Drawing.Size(169, 98);
+      this.yAxisConfigGroupBox.Size = new System.Drawing.Size(169, 77);
       this.yAxisConfigGroupBox.TabIndex = 2;
       this.yAxisConfigGroupBox.TabStop = false;
@@ -97,5 +97,5 @@
       // 
       this.automaticYAxisCheckBox.AutoSize = true;
-      this.automaticYAxisCheckBox.Location = new System.Drawing.Point(6, 72);
+      this.automaticYAxisCheckBox.Location = new System.Drawing.Point(49, -1);
       this.automaticYAxisCheckBox.Name = "automaticYAxisCheckBox";
       this.automaticYAxisCheckBox.Size = new System.Drawing.Size(73, 17);
@@ -108,5 +108,5 @@
       this.densityGroupBox.Controls.Add(this.densityComboBox);
       this.densityGroupBox.Dock = System.Windows.Forms.DockStyle.Top;
-      this.densityGroupBox.Location = new System.Drawing.Point(0, 98);
+      this.densityGroupBox.Location = new System.Drawing.Point(0, 77);
       this.densityGroupBox.Name = "densityGroupBox";
       this.densityGroupBox.Size = new System.Drawing.Size(169, 49);
@@ -156,7 +156,7 @@
       this.variableGroupBox.Controls.Add(this.variableListView);
       this.variableGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.variableGroupBox.Location = new System.Drawing.Point(0, 147);
+      this.variableGroupBox.Location = new System.Drawing.Point(0, 126);
       this.variableGroupBox.Name = "variableGroupBox";
-      this.variableGroupBox.Size = new System.Drawing.Size(169, 501);
+      this.variableGroupBox.Size = new System.Drawing.Size(169, 522);
       this.variableGroupBox.TabIndex = 1;
       this.variableGroupBox.TabStop = false;
Index: /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionTargetResponseGradientView.cs
===================================================================
--- /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionTargetResponseGradientView.cs	(revision 13852)
+++ /branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionTargetResponseGradientView.cs	(revision 13853)
@@ -160,6 +160,4 @@
         ShowLegend = false,
         ShowCursor = true,
-        ShowXAxisLabel = true,
-        ShowYAxisLabel = true,
         YAxisTicks = 5,
       };
