Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionBoxPlotView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionBoxPlotView.cs	(revision 11006)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionBoxPlotView.cs	(revision 11007)
@@ -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();
@@ -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: {
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionBubbleChartView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionBubbleChartView.cs	(revision 11006)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionBubbleChartView.cs	(revision 11007)
@@ -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];
     }
@@ -723,10 +719,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();
