diff --git a/gnome-sudoku/src/lib/gsudoku.py b/gnome-sudoku/src/lib/gsudoku.py
index 41d735b..2128485 100644
--- a/gnome-sudoku/src/lib/gsudoku.py
+++ b/gnome-sudoku/src/lib/gsudoku.py
@@ -411,17 +411,28 @@ class SudokuGameDisplay (SudokuNumberGrid, gobject.GObject):
         if self.grid.check_for_completeness():
             self.emit('puzzle-finished')
 
-    def complain_conflicts (self, x, y, value):
-        '''set error highlights on [x, y] and all related box.
-
-        We think the error is caused by `value`. But the box at [x, y] could
-        have a different value.'''
-        self.__entries__[x, y].set_error_highlight(True)
-        conflicts = self.grid.find_conflicts(x, y, value)
-        for conflict in conflicts:
-            self.__entries__[conflict].set_error_highlight(True)
-        self.__error_pairs__[(x, y)] = conflicts
-
+    def highlight_conflicts (self, x, y, val):
+        '''Find and highlight any squares that conflict with value val at position x,y.
+
+        For conflict resolution, the __entries__ must be checked.  This was previously attempted in the
+        SudokuGrid class(self.grid.find_conflicts()), but the values in that grid do not correspond to
+        what is actually on the screen and caused some conflicts to go unreported.
+        '''
+        coords = (self.grid.row_coords[y]
+                  + self.grid.col_coords[x]
+                  + self.grid.box_coords[self.grid.box_by_coords[(x, y)]]
+                 )
+        conflicting_coordinates = []
+        for xx, yy in coords:
+            if (not (x == xx and y == yy)) and self.__entries__[(xx, yy)].get_value() == val:
+                # This will highlight any cells that conflict with the current cell
+                self.__entries__[(xx, yy)].set_error_highlight(True)
+                conflicting_coordinates.append((xx, yy))
+        # When a conflict is found - also highlight the current cell and update __error_pairs__
+        if conflicting_coordinates:
+            self.__entries__[(x, y)].set_error_highlight(True)
+            self.__error_pairs__[(x, y)] = conflicting_coordinates
+    
     @simple_debug
     def add_value (self, x, y, val, trackers = []):
         """Add value val at position x, y.
@@ -455,10 +466,12 @@ class SudokuGameDisplay (SudokuNumberGrid, gobject.GObject):
         # Add value to our underlying sudoku grid -- this will raise
         # an error if the value is out of bounds with the current
         # rules.
+        # 2/2/2010 - JAR - Moved conflict resolution to highlight_conflicts()
         try:
             self.grid.add(x, y, val, True)
-        except sudoku.ConflictError, err:
-            self.complain_conflicts(err.x, err.y, err.value)
+        except: pass
+        # Highlight any conflicts that the new value creates
+        self.highlight_conflicts(x, y, val)
         # Draw our entry
         self.__entries__[(x, y)].queue_draw()
 
diff --git a/gnome-sudoku/src/lib/sudoku.py b/gnome-sudoku/src/lib/sudoku.py
index fb9c09a..fbfbae0 100644
--- a/gnome-sudoku/src/lib/sudoku.py
+++ b/gnome-sudoku/src/lib/sudoku.py
@@ -183,29 +183,6 @@ class SudokuGrid:
                     possibilities[(x, y)] = self.possible_values(x, y)
         return possibilities
 
-    def find_conflicts (self, x, y, val, conflict_type = None):
-        '''Find all squares that conflict with value val at position x,y.
-
-        If conflict_type is specified, we only find conflicts of given
-        type (ROW, COLUMN OR BOX).
-        '''
-        if conflict_type == TYPE_ROW:
-            coords = self.row_coords[y]
-        elif conflict_type == TYPE_COLUMN:
-            coords = self.col_coords[x]
-        elif conflict_type == TYPE_BOX:
-            coords = self.box_coords[self.box_by_coords[(x, y)]]
-        else:
-            coords = (self.row_coords[y]
-                      + self.col_coords[x]
-                      + self.box_coords[self.box_by_coords[(x, y)]]
-                      )
-        conflicting_coordinates = []
-        for x, y in coords:
-            if self._get_(x, y) == val:
-                conflicting_coordinates.append((x, y))
-        return conflicting_coordinates
-
     def to_string (self):
         """Output our grid as a string."""
         return " ".join([" ".join([str(x) for x in row]) for row in self.grid])
