diff --git a/meld/filediff.py b/meld/filediff.py
index 0aabdba..66e9bed 100644
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@ -762,16 +762,29 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
                                                 None, True)
             self.queue_draw()
 
-    def _filter_text(self, txt):
+    def _filter_text(self, txt, buf, start_offset, end_offset):
+        dimmed_tag = buf.get_tag_table().lookup("dimmed")
+        buf.remove_tag(dimmed_tag, buf.get_iter_at_offset(start_offset), buf.get_iter_at_offset(end_offset))
         def killit(m):
             assert m.group().count("\n") == 0
             if len(m.groups()):
                 s = m.group()
+                s2 = s
                 for g in m.groups():
                     if g:
+                        i = 0
+                        while s2.find(g, i) is not -1:
+                            start_iter = buf.get_iter_at_offset(m.start()+s2.find(g, i)       +start_offset)
+                            end_iter   = buf.get_iter_at_offset(m.start()+s2.find(g, i)+len(g)+start_offset)
+                            buf.apply_tag(dimmed_tag, start_iter, end_iter)
+                            i = s2.find(g, i)+len(g)
                         s = s.replace(g,"")
+
                 return s
             else:
+                start_iter = buf.get_iter_at_offset(m.start()+start_offset)
+                end_iter   = buf.get_iter_at_offset(m.end()  +start_offset)
+                buf.apply_tag(dimmed_tag, start_iter, end_iter)
                 return ""
         try:
             for filt in self.text_filters:
diff --git a/meld/meldbuffer.py b/meld/meldbuffer.py
index 9c89999..a718182 100644
--- a/meld/meldbuffer.py
+++ b/meld/meldbuffer.py
@@ -223,7 +223,7 @@ class BufferLines(object):
             end = self.buf.get_iter_at_line_or_eof(hi)
             txt = text_type(self.buf.get_text(start, end, False), 'utf8')
 
-            filter_txt = self.textfilter(txt)
+            filter_txt = self.textfilter(txt, self.buf, start.get_offset(), end.get_offset())
             lines = filter_txt.splitlines()
             ends = filter_txt.splitlines(True)
 
@@ -269,7 +269,7 @@ class BufferLines(object):
             if not line_end.ends_line():
                 line_end.forward_to_line_end()
             txt = self.buf.get_text(line_start, line_end, False)
-            return text_type(self.textfilter(txt), 'utf8')
+            return text_type(self.textfilter(txt, self.buf, line_start.get_offset(), line_end.get_offset()), 'utf8')
 
     def __len__(self):
         return self.buf.get_line_count()
diff --git a/meld/sourceview.py b/meld/sourceview.py
index 0d142f3..f0c01a1 100644
--- a/meld/sourceview.py
+++ b/meld/sourceview.py
@@ -124,6 +124,10 @@ class MeldSourceView(GtkSource.View):
 
         buf = meldbuffer.MeldBuffer()
         buf.create_tag("inline")
+        buf.create_tag("dimmed")
+        dimmed_tag = buf.get_tag_table().lookup("dimmed")
+        dimmed_tag.set_property("foreground", "#999999")
+        dimmed_tag.set_property("foreground-set", True)
         self.set_buffer(buf)
 
         meldsettings.connect('changed', self.on_setting_changed)
