diff --git a/blxGff3Parser.c b/blxGff3Parser.c
index f9789de9e41127d64521024499a0dd38ca06dcf1..8903d4a179464f636c67e7a31fee4e88735359a7 100644
--- a/blxGff3Parser.c
+++ b/blxGff3Parser.c
@@ -534,31 +534,6 @@ static void parseAttributes(char *attributes,
 }
 
 
-/* Utility to remove any GFF3 escape characters from the given string and replace them with
- * the real characters they represent. Takes into account special chars for generic attributes,
- * and also the Target-name and ID attributes if requested */
-static void replaceGff3EscapeChars(char **text, const gboolean targetNameAtt, const gboolean idAtt)
-{
-  GString *gstr = g_string_new(*text);
-
-  seqtools_g_string_replace(gstr, "%3b", ";");
-  seqtools_g_string_replace(gstr, "%3d", "=");
-  seqtools_g_string_replace(gstr, "%09", "\t");
-
-  /* Target-name and ID attributes additionally have whitespace escaped */
-  if (targetNameAtt || idAtt)
-    seqtools_g_string_replace(gstr, "%20", " ");
-    
-  /* ID attribute additional has ">" escaped */
-  if (idAtt)
-    seqtools_g_string_replace(gstr, "%e3", ">");
-    
-  g_free(*text);
-  *text = gstr->str;
-  g_string_free(gstr, FALSE);
-}
-
-
 /* Parse a tag/data pair of the format "tag=data" */
 static void parseTagDataPair(char *text,
                              const int lineNum,
@@ -607,8 +582,11 @@ static void parseTagDataPair(char *text,
         }
       else if (!strcmp(tokens[0], "url"))
         {
+#if GLIB_MAJOR_VERSION >= 2 && GLIB_MINOR_VERSION >= 16
+          gffData->url = g_uri_unescape_string(tokens[1], NULL);
+#else
           gffData->url = g_strdup(tokens[1]);
-          replaceGff3EscapeChars(&gffData->url, FALSE, FALSE);
+#endif
         }
       else
         {
diff --git a/blxview.c b/blxview.c
index 971ec9febbfb4c68f3c7876b1330bb950d23a177..e75563b496ed0ed488a90b86d651c80cb6975784 100644
--- a/blxview.c
+++ b/blxview.c
@@ -88,7 +88,7 @@
 01-10-05	Added getsseqsPfetch to fetch all missing sseqs in one go via socket connection to pfetch [RD]
 
  * Created: Thu Feb 20 10:27:39 1993 (esr)
- * CVS info:   $Id: blxview.c,v 1.75 2010-10-05 17:40:20 gb10 Exp $
+ * CVS info:   $Id: blxview.c,v 1.76 2010-10-18 14:06:53 gb10 Exp $
  *-------------------------------------------------------------------
  */
 
@@ -1596,6 +1596,12 @@ void destroyMspData(MSP *msp)
       g_array_free(msp->xy, TRUE);
       msp->xy = NULL;
     }
+    
+  if (msp->url)
+    {
+      g_free(msp->url);
+      msp->url = NULL;
+    }
 }