diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
index e4b08d5..9e85cae 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
@@ -58,8 +58,8 @@
  * - Add format to exporters
  * - Add file suffix to exporters
  * - Add "..." to snippets in RTF exporter
- * - Fix SGML entities in RTF exporter
  * - Test Snippet-Export with multiple classes.
+ * - Test Snippet-Export with cutted matches.
  */
 
 @Path("/")
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/RtfExporter.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/RtfExporter.java
index 633448e..888dec1 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/RtfExporter.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/RtfExporter.java
@@ -130,7 +130,7 @@
     };
 
     // Based on jrtf by Christian Ullenboom
-    static void rtfText(Writer w, String rawText) throws IOException {
+    private static void rtfText(Writer w, String rawText) throws IOException {
         char c;
         for (int i = 0; i < rawText.length(); i++) {
             c = rawText.charAt( i ); 
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Snippet.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Snippet.java
index 6750948..8726934 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Snippet.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Snippet.java
@@ -8,17 +8,13 @@
 
 
     public Snippet (String snippetstr) {
-        String[] split = snippetstr.split("</?mark>");
-        String splitleft = split[0];
-        String splitmatch = split[1];
-        String splitright = split[2];
-        //(?i) makes the regex case insensitive.
-        String splitleftr = splitleft.replaceAll("(?i)</?span[^>]*>", "");
-        this.setLeft(splitleftr.trim());
-        String splitmatchr = splitmatch.replaceAll("(?i)</?span[^>]*>", "");
-        this.setMark(splitmatchr.trim());
-        String splitrightr = splitright.replaceAll("(?i)</?span[^>]*>", "");
-        this.setRight(splitrightr.trim());
+        String[] split = snippetstr
+            .replaceAll("(?i)</?span[^>]*>", "")
+            .split("</?mark>");
+
+        this.setLeft(unescapeHTML(split[0].trim()));
+        this.setMark(unescapeHTML(split[1].trim()));
+        this.setRight(unescapeHTML(split[2].trim()));
     }
 
 
@@ -50,4 +46,16 @@
     public void setMark (String mark) {
         this.mark = mark;
     }
+
+    private static String unescapeHTML (String text) {
+        if (text == null)
+			return "";
+		
+        return text
+            .replace("&quot;", "\"")
+            .replace("&apos;", "'")
+            .replace("&lt;", "<")
+            .replace("&gt;", ">")
+            .replace("&amp;", "&");
+    };
 }
diff --git a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/RtfExportTest.java b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/RtfExportTest.java
index 0ba95c7..a357dbe 100644
--- a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/RtfExportTest.java
+++ b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/RtfExportTest.java
@@ -42,13 +42,14 @@
                   "\"title\":\"Title2\","+
                   "\"pubDate\":\"20051104\","+
                   "\"textSigle\":\"RTF/G59/34285\","+
-                  "\"snippet\":\"Simpler <mark>match2</mark> Snippet\"}"+
+                  "\"snippet\":\"Simpler <mark>&quot;match2&quot;</mark> Snippet\"}"+
                   "]}");
 
         Response resp = json.serve().build();
         String x = (String) resp.getEntity();
         resp.close();
         assertTrue(x.contains("{\\b match1}"));
+        assertTrue(x.contains("{\\b \"match2\"}"));
         assertTrue(x.contains("{\\b Title1"));
         assertTrue(x.contains("{\\b Title2"));
     };
diff --git a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/SnippetTest.java b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/SnippetTest.java
index d8d7e18..41f9144 100644
--- a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/SnippetTest.java
+++ b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/SnippetTest.java
@@ -20,4 +20,19 @@
         assertEquals(s.getRight(),"ging um");
         assertEquals(s.getMark(),"Plagegeist");
     };
+
+    @Test
+    public void testReal () {
+        Snippet s = new Snippet("<span class=\"context-left\"><span class=\"more\"></span>und wie ich in einem Buch von Bernhard Karlgren gelesen habe, wird da eine alte Bedeutung &quot;Blutegel&quot; für dieses Zeichen angenommen, bzw. auch andere Ungeziefer konnten wohl gemeint sein. Der ma-Teil des Worts wurde also ursprünglich wahrscheinlich im Sinne von &quot;</span><span class=\"match\"><mark>Plagegeist</mark></span><span class=\"context-right\">&quot; verwendet, folglich war 蚂蚁 ursprünglich frei übersetzt eine &quot;Sch...-Ameise&quot; ;-) -- 18:21, 30. Apr. 2007 (CEST) Hallo Allgaeuer, mag sein, dass es für dich ein Hammer ist, aber es ist Stand der aktuellen Forschung in der Sinologie. Schriften von Karlgren u.<span class=\"more\"></span></span>");
+        assertEquals(s.getLeft(),
+                     "und wie ich in einem Buch von Bernhard Karlgren "+
+                     "gelesen habe, wird da eine alte Bedeutung "+
+                     "\"Blutegel\" "+
+                     "für dieses Zeichen angenommen, bzw. auch andere "+
+                     "Ungeziefer konnten wohl gemeint sein. Der ma-Teil "+
+                     "des Worts wurde also ursprünglich wahrscheinlich "+
+                     "im Sinne von \"");
+        assertEquals(s.getRight(),"\" verwendet, folglich war 蚂蚁 ursprünglich frei übersetzt eine \"Sch...-Ameise\" ;-) -- 18:21, 30. Apr. 2007 (CEST) Hallo Allgaeuer, mag sein, dass es für dich ein Hammer ist, aber es ist Stand der aktuellen Forschung in der Sinologie. Schriften von Karlgren u.");
+        assertEquals(s.getMark(),"Plagegeist");
+    };
 };
