Index: /stable/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionBoxPlotView.cs
===================================================================
--- /stable/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionBoxPlotView.cs	(revision 11138)
+++ /stable/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionBoxPlotView.cs	(revision 11139)
@@ -122,5 +122,4 @@
         Invoke(new EventHandler(Content_Reset), sender, e);
       else {
-        this.categoricalMapping.Clear();
         UpdateDataPoints();
         UpdateAxisLabels();
@@ -189,4 +188,5 @@
 
     private void UpdateDataPoints() {
+      this.categoricalMapping.Clear();
       this.chart.Series.Clear();
       this.seriesCache.Clear();
@@ -216,5 +216,5 @@
         if (datapoint != null) {
           IRun run = (IRun)datapoint.Tag;
-          string selectedAxis = (string)xAxisComboBox.SelectedItem;
+          string selectedAxis = xAxisValue;
           IItem value = null;
 
@@ -325,5 +325,5 @@
       }
     }
-    private double GetCategoricalValue(int dimension, string value) {
+    private double? GetCategoricalValue(int dimension, string value) {
       if (!this.categoricalMapping.ContainsKey(dimension)) {
         this.categoricalMapping[dimension] = new Dictionary<object, double>();
@@ -336,8 +336,9 @@
         }
       }
+      if (!this.categoricalMapping[dimension].ContainsKey(value)) return null;
       return this.categoricalMapping[dimension][value];
     }
-    private double GetValue(IRun run, AxisDimension axisDimension) {
-      double value = double.NaN;
+    private double? GetValue(IRun run, AxisDimension axisDimension) {
+      double? value = double.NaN;
       switch (axisDimension) {
         case AxisDimension.Color: {
@@ -373,10 +374,13 @@
       Axis yAxis = this.chart.ChartAreas[BoxPlotChartAreaName].AxisY;
       int axisDimensionCount = Enum.GetNames(typeof(AxisDimension)).Count();
-      SetCustomAxisLabels(xAxis, xAxisComboBox.SelectedIndex - axisDimensionCount);
-      SetCustomAxisLabels(yAxis, yAxisComboBox.SelectedIndex - axisDimensionCount);
-      if (xAxisComboBox.SelectedItem != null)
-        xAxis.Title = xAxisComboBox.SelectedItem.ToString();
-      if (yAxisComboBox.SelectedItem != null)
-        yAxis.Title = yAxisComboBox.SelectedItem.ToString();
+      //mkommend: combobox.SelectedIndex could not be used as this changes during hoovering over possible values
+      var xSAxisSelectedIndex = xAxisValue == null ? 0 : xAxisComboBox.Items.IndexOf(xAxisValue);
+      var ySAxisSelectedIndex = yAxisValue == null ? 0 : xAxisComboBox.Items.IndexOf(yAxisValue);
+      SetCustomAxisLabels(xAxis, xSAxisSelectedIndex - axisDimensionCount);
+      SetCustomAxisLabels(yAxis, ySAxisSelectedIndex - axisDimensionCount);
+      if (xAxisValue != null)
+        xAxis.Title = xAxisValue;
+      if (yAxisValue != null)
+        yAxis.Title = yAxisValue;
     }
 
Index: /stable/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionBubbleChartView.cs
===================================================================
--- /stable/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionBubbleChartView.cs	(revision 11138)
+++ /stable/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionBubbleChartView.cs	(revision 11139)
@@ -56,5 +56,5 @@
     private bool suppressUpdates = false;
 
-    private RunCollectionContentConstraint visibilityConstraint = new RunCollectionContentConstraint() { Active = true };
+    private readonly RunCollectionContentConstraint visibilityConstraint = new RunCollectionContentConstraint() { Active = true };
 
     public RunCollectionBubbleChartView() {
@@ -153,8 +153,5 @@
         if (suppressUpdates) return;
 
-        foreach (var run in Content) UpdateRun(run);
-        UpdateMarkerSizes();
-        UpdateCursorInterval();
-        chart.ChartAreas[0].RecalculateAxesScale();
+        UpdateDataPoints();
         UpdateAxisLabels();
       }
@@ -190,9 +187,7 @@
     protected override void OnContentChanged() {
       base.OnContentChanged();
-      this.categoricalMapping.Clear();
       UpdateComboBoxes();
       UpdateDataPoints();
       UpdateCaption();
-      RebuildInverseIndex();
     }
 
@@ -267,6 +262,4 @@
         Invoke(new EventHandler(Content_Reset), sender, e);
       else {
-        this.categoricalMapping.Clear();
-        RebuildInverseIndex();
         UpdateDataPoints();
         UpdateAxisLabels();
@@ -278,5 +271,7 @@
       series.Points.Clear();
       runToDataPointMapping.Clear();
+      categoricalMapping.Clear();
       selectedRuns.Clear();
+      RebuildInverseIndex();
 
       chart.ChartAreas[0].AxisX.IsMarginVisible = xAxisValue != AxisDimension.Index.ToString();
@@ -438,5 +433,5 @@
       }
     }
-    private double GetCategoricalValue(int dimension, string value) {
+    private double? GetCategoricalValue(int dimension, string value) {
       if (!this.categoricalMapping.ContainsKey(dimension)) {
         this.categoricalMapping[dimension] = new Dictionary<object, double>();
@@ -449,4 +444,5 @@
         }
       }
+      if (!this.categoricalMapping[dimension].ContainsKey(value)) return null;
       return this.categoricalMapping[dimension][value];
     }
@@ -667,10 +663,13 @@
       Axis yAxis = this.chart.ChartAreas[0].AxisY;
       int axisDimensionCount = Enum.GetNames(typeof(AxisDimension)).Count();
-      SetCustomAxisLabels(xAxis, xAxisComboBox.SelectedIndex - axisDimensionCount);
-      SetCustomAxisLabels(yAxis, yAxisComboBox.SelectedIndex - axisDimensionCount);
-      if (xAxisComboBox.SelectedItem != null)
-        xAxis.Title = xAxisComboBox.SelectedItem.ToString();
-      if (yAxisComboBox.SelectedItem != null)
-        yAxis.Title = yAxisComboBox.SelectedItem.ToString();
+      //mkommend: combobox.SelectedIndex could not be used as this changes during hovering over possible values
+      var xSAxisSelectedIndex = xAxisValue == null ? 0 : xAxisComboBox.Items.IndexOf(xAxisValue);
+      var ySAxisSelectedIndex = yAxisValue == null ? 0 : xAxisComboBox.Items.IndexOf(yAxisValue);
+      SetCustomAxisLabels(xAxis, xSAxisSelectedIndex - axisDimensionCount);
+      SetCustomAxisLabels(yAxis, ySAxisSelectedIndex - axisDimensionCount);
+      if (xAxisValue != null)
+        xAxis.Title = xAxisValue;
+      if(yAxisValue != null)
+      yAxis.Title = yAxisValue;
     }
 
@@ -723,10 +722,12 @@
     }
     private void hideRunsToolStripMenuItem_Click(object sender, EventArgs e) {
-      HideRuns(selectedRuns);
+      //ToList is necessary to prevent lazy evaluation
+      HideRuns(selectedRuns.ToList());
       //could not use ClearSelectedRuns as the runs are not visible anymore
       selectedRuns.Clear();
     }
     private void hideRunsButton_Click(object sender, EventArgs e) {
-      HideRuns(selectedRuns);
+      //ToList is necessary to prevent lazy evaluation
+      HideRuns(selectedRuns.ToList());
       //could not use ClearSelectedRuns as the runs are not visible anymore
       selectedRuns.Clear();
