diff --git a/dev/js/spec/matchSpec.js b/dev/js/spec/matchSpec.js
index 9b3ef9e..d10aced 100644
--- a/dev/js/spec/matchSpec.js
+++ b/dev/js/spec/matchSpec.js
@@ -8,6 +8,7 @@
         'match/infolayer',
         'match/treeitem',
         'match/treearc',
+        'match/treehierarchy',
         'buttongroup/menu',
         'match/attachement',
         'hint/foundries/cnx',
@@ -20,6 +21,7 @@
           infoClass,
           matchTreeItemClass,
           matchRelClass,
+          matchHierClass,
           matchTreeMenuClass,
           attachementClass) {
 
@@ -200,8 +202,10 @@
       "</span>" +
       "<span class=\"context-right\"></span>";
 
+  var treeSnippetHierarchy =
+      "<span class=\"context-left\"><\/span><span class=\"match\"><span title=\"corenlp\/c:MPN\">Leonard Maltin<\/span> schrieb: „<span title=\"corenlp\/c:S\"><span title=\"corenlp\/c:NP\">Plot <span title=\"corenlp\/c:MPN\">contrivance isn‘<mark>t<\/mark> handled badly<\/span><\/span> <span title=\"corenlp\/c:PP\">in above-average programmer<\/span><\/span>“.&lt;<span title=\"corenlp\/c:S\"><span title=\"corenlp\/c:ROOT\"><span title=\"corenlp\/c:NP\">ref&gt;''<span title=\"corenlp\/c:NP\"><span title=\"corenlp\/c:CNP\">Movie &amp;amp; Video<\/span> Guide<\/span><\/span>'', <span title=\"corenlp\/c:VP\">1996 edition, <span title=\"corenlp\/c:NP\"><span title=\"corenlp\/c:CNP\">S. 210<\/span><\/span><\/span>.<\/span><\/span><\/span><span class=\"context-right\"><\/span>";
 
-  function matchElementFactory () {
+          function matchElementFactory () {
     var me = document.createElement('li');
 
     me.setAttribute(
@@ -641,6 +645,17 @@
       expect(tree.children[1].tagName).toEqual('DIV');
     });
 
+    it('should make the tree downloadable', function () {
+      var treeClass = matchHierClass.create(treeSnippetHierarchy);
+      var treeElement = treeClass.element();
+      expect(treeElement.tagName).toEqual("svg");
+
+      var base64 = treeClass.toBase64();
+      var str = atob(base64);
+      expect(str).toMatch(new RegExp('<defs><style>path'));
+      expect(str).not.toMatch(new RegExp('&nbsp;'));
+      expect(str).toMatch(new RegExp('&amp;'));
+    });
   });
 
 
diff --git a/dev/js/src/match/treehierarchy.js b/dev/js/src/match/treehierarchy.js
index 08ebeef..e9c6122 100644
--- a/dev/js/src/match/treehierarchy.js
+++ b/dev/js/src/match/treehierarchy.js
@@ -214,8 +214,8 @@
         'g.leaf > rect ' +         '{ display: none }' +
         'g > text > tspan ' +      '{ text-anchor: middle; font-size: 9pt }' +
         'g.leaf > text > tspan ' + '{ font-size: 10pt; overflow: visible; }';
-      
-      return btoa(unescape(encodeURIComponent(svg.outerHTML)));
+
+      return btoa(unescape(encodeURIComponent(svg.outerHTML)).replace(/&nbsp;/g, ' '));
     },
     
     /**
@@ -279,11 +279,16 @@
               'transform',
               'translate(' + v.width/2 + ',' + ((v.height / 2) + 5) + ')'
             );
+
+            var vLabel = v.label.replace(/&nbsp;/g, " ")
+                .replace(/&amp;/g, '&')
+                .replace(/&lt;/g, '<')
+                .replace(/&gt;/g, '>');
             
             if (v.class === "leaf") {
-              text.setAttribute('title', v.label);
+              text.setAttribute('title', vLabel);
 
-              var labelPart = v.label.split(" ");
+              var labelPart = vLabel.split(" ");
               var n = 0;
               for (var i = 0; i < labelPart.length; i++) {
                 if (labelPart[i].length === 0)
@@ -308,7 +313,7 @@
             }
             else {
               var tspan = that._c('tspan');
-              tspan.appendChild(d.createTextNode(v.label));
+              tspan.appendChild(d.createTextNode(vLabel));
               tspan.setAttribute('x', v.x - v.width / 2);
               text.appendChild(tspan);
             };
