diff --git a/uk/ac/sanger/artemis/io/StreamQualifier.java b/uk/ac/sanger/artemis/io/StreamQualifier.java
index 5cb78f2d183357e0c044c925655f844c8455388d..9afa82156d6b9ae5c84c5395185dd5832623f9dc 100644
--- a/uk/ac/sanger/artemis/io/StreamQualifier.java
+++ b/uk/ac/sanger/artemis/io/StreamQualifier.java
@@ -106,10 +106,14 @@ class StreamQualifier {
         buffer.append ('/');
         buffer.append (qualifier.getName ());
         if (values.elementAt (i) != null) {
+          /* Escape double quotes */
+          String processedValue = (String)values.elementAt (i).replaceAll("(^|[^\"])\"([^\"]|$)","$1\"\"$2");
+          /* Mask line breaks in entries (e.g. notes/history) */
+          processedValue = processedValue.replaceAll("\n", " ");
           buffer.append ('=');
-          buffer.append (quotedValue (qualifier_info,
-                                      qualifier.getName (),
-                                      (String)values.elementAt (i)));
+          buffer.append (quotedValue(qualifier_info,
+                                      qualifier.getName(),
+                                      processedValue));
         }
       }
 
@@ -140,10 +144,14 @@ class StreamQualifier {
         buffer.append ('/');
         buffer.append (qualifier.getName ());
         if (values.elementAt (i) != null) {
+          /* Escape double quotes */
+          String processedValue = (String)values.elementAt (i).replaceAll("(^|[^\"])\"([^\"]|$)","$1\"\"$2");
+          /* Mask line breaks in entries (e.g. notes/history) */
+          processedValue = processedValue.replaceAll("\n", " ");
           buffer.append ('=');
           buffer.append (quotedValue (qualifier_info,
                                       qualifier.getName (),
-                                      (String)values.elementAt (i)));
+                                      processedValue));
         }
         return_vector.add (buffer.toString ());
       }