diff --git a/uk/ac/sanger/artemis/editor/FastaTextPane.java b/uk/ac/sanger/artemis/editor/FastaTextPane.java
index 3beea64cb7a1339955af7130161b2d2ddcad8fcf..848b53d25c0aebd5ac60b9817c2ac93ca9f92ae5 100644
--- a/uk/ac/sanger/artemis/editor/FastaTextPane.java
+++ b/uk/ac/sanger/artemis/editor/FastaTextPane.java
@@ -61,6 +61,7 @@ public class FastaTextPane extends JScrollPane
   protected static int MAX_HITS = 70;
   private static boolean remoteMfetch = false;
   private static boolean forceUrl = false;
+  private boolean blastPlus = false;
   
   static 
   {
@@ -159,6 +160,8 @@ public class FastaTextPane extends JScrollPane
         if(line.startsWith("BLASTP"))
         {
           format = "blastp";
+          if(line.indexOf("+") > -1)
+            blastPlus = true;
           break;
         }
         else if(line.indexOf("FASTA") > -1)
@@ -339,25 +342,42 @@ public class FastaTextPane extends JScrollPane
         else if(line.startsWith("Query="))
         {
           int ind2 = 0;
-          ind1 = line.indexOf(" letters)");
-          if(ind1 == -1)
+          if(blastPlus)
           {
-            String nextLine = null;
-            while((nextLine = buffReader.readLine()).indexOf(" letters)") < 0)
+            ind2 = line.indexOf("Length=");
+            if(ind2 == -1)
             {
-              len += nextLine.length()+1;
-              sbuff.append(nextLine+"\n");
+              while((line = buffReader.readLine()).indexOf("Length=") < 0)
+              {
+                len += line.length()+1;
+                sbuff.append(line+"\n");
+              }
+              ind2 = line.indexOf("Length=");
             }
-            line = nextLine;
-            ind1 = nextLine.indexOf(" letters)");
-            ind2 = nextLine.indexOf("(");
+            ind1 = line.length();
+            qlen = Integer.parseInt(line.substring(ind2+7,ind1).trim());
           }
           else
-            ind2 = line.indexOf("(");
+          {
+            ind1 = line.indexOf(" letters)");
+            if(ind1 == -1)
+            {
+              String nextLine = null;
+              while((nextLine = buffReader.readLine()).indexOf(" letters)") < 0)
+              {
+                len += nextLine.length()+1;
+                sbuff.append(nextLine+"\n");
+              }
+              line = nextLine;
+              ind1 = nextLine.indexOf(" letters)");
+              ind2 = nextLine.indexOf("(");
+            }
+            else
+              ind2 = line.indexOf("(");
 
-          qlen = Integer.parseInt(line.substring(ind2+1,ind1).trim());
+            qlen = Integer.parseInt(line.substring(ind2+1,ind1).trim());
+          }
         }
-
         textPosition += len;
       }