Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataGridContentView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataGridContentView.cs	(revision 10718)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataGridContentView.cs	(revision 10719)
@@ -26,4 +26,5 @@
 using System.Windows.Forms;
 using HeuristicLab.Data;
+using HeuristicLab.DataPreprocessing.Filter;
 using HeuristicLab.MainForm;
 
@@ -58,4 +59,13 @@
       set {
         _highlightedCells = value;
+        Refresh();
+      }
+    }
+
+    private IDictionary<int, IList<int>> _highlightedCellsBackground;
+    public IDictionary<int, IList<int>> HightlightedCellsBackground {
+      get { return _highlightedCellsBackground; }
+      set {
+        _highlightedCellsBackground = value;
         Refresh();
       }
@@ -70,4 +80,5 @@
       _highlightedCells = new Dictionary<int, IList<int>>();
       _highlightedRowIndices = new List<int>();
+      _highlightedCellsBackground = new Dictionary<int, IList<int>>();
       currentCell = null;
     }
@@ -147,4 +158,6 @@
       findAndReplaceDialog = new FindAndReplaceDialog();
       findAndReplaceDialog.Show(this);
+      HightlightedCellsBackground = GetSelectedCells();
+      dataGridView.ClearSelection();
       findAndReplaceDialog.FindAllEvent += findAndReplaceDialog_FindAllEvent;
       findAndReplaceDialog.FindNextEvent += findAndReplaceDialog_FindNextEvent;
@@ -156,4 +169,5 @@
     void findAndReplaceDialog_FormClosing(object sender, FormClosingEventArgs e) {
       ResetHighlightedCells();
+      ResetHighlightedCellsBackground();
     }
 
@@ -188,5 +202,4 @@
       if (!moreOccurences) {
         searchIterator.Reset();
-        ResetHighlightedCells();
       }
     }
@@ -194,8 +207,10 @@
     void findAndReplaceDialog_FindAllEvent(object sender, EventArgs e) {
       HightlightedCells = FindAll(findAndReplaceDialog.GetSearchText());
+      searchIterator.Reset();
     }
 
     private IDictionary<int, IList<int>> FindAll(string match) {
-      var comparisonFilter = new Filter.ComparisonFilter(Content.FilterLogic.PreprocessingData, Core.ConstraintOperation.Equal, new StringValue(match), true);
+      bool searchInSelection = HightlightedCellsBackground.Values.Sum(list => list.Count) > 1;
+      var comparisonFilter = new ComparisonFilter(Content.FilterLogic.PreprocessingData, Core.ConstraintOperation.Equal, new StringValue(match), true);
       var filters = new List<Filter.IFilter>() { comparisonFilter };
       var foundCells = new Dictionary<int, IList<int>>();
@@ -207,4 +222,10 @@
           .Select(pair => pair.Index)
           .ToList();
+        IList<int> selectedList;
+        if (searchInSelection && HightlightedCellsBackground.TryGetValue(i, out selectedList)) {
+          foundCells[i].Intersect(selectedList);
+        } else {
+          foundCells[i].Clear();
+        }
       }
       return foundCells;
@@ -244,4 +265,8 @@
     private void ResetHighlightedCells() {
       HightlightedCells = new Dictionary<int, IList<int>>();
+    }
+
+    private void ResetHighlightedCellsBackground() {
+      HightlightedCellsBackground = new Dictionary<int, IList<int>>();
     }
 
@@ -284,6 +309,9 @@
       Color backColor = e.CellStyle.BackColor;
 
+      if (HightlightedCellsBackground.ContainsKey(e.ColumnIndex) && HightlightedCellsBackground[e.ColumnIndex].Contains(e.RowIndex)) {
+        backColor = Color.LightGray;
+      }
       if (HighlightedRowIndices.Contains(rowIndex) || HightlightedCells.ContainsKey(e.ColumnIndex) && HightlightedCells[e.ColumnIndex].Contains(e.RowIndex)) {
-        backColor = Color.Pink;
+        backColor = Color.LightGreen;
       }
 
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/Utils/FindPreprocessingItemsIterator.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/Utils/FindPreprocessingItemsIterator.cs	(revision 10718)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/Utils/FindPreprocessingItemsIterator.cs	(revision 10719)
@@ -76,12 +76,4 @@
       return result;
     }
-
-    //private bool EndReached() {
-    //  bool result = true;
-    //  if (items != null && CurrentCellExists()) {
-    //    result = currentCell.Item1 >= items.Count - 1 && currentCell.Item2 >= items[currentCell.Item1].Count - 1;
-    //  }
-    //  return result;
-    //}
   }
 }
