diff --git a/uk/ac/sanger/artemis/components/Plot.java b/uk/ac/sanger/artemis/components/Plot.java
index a8ef94b511b8f8e4d2965f543e7669f208ec6821..35a9d965ad297e9714c8a8e52726fe2b1b510c88 100644
--- a/uk/ac/sanger/artemis/components/Plot.java
+++ b/uk/ac/sanger/artemis/components/Plot.java
@@ -20,7 +20,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  *
- * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/Plot.java,v 1.19 2009-06-05 10:29:31 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/Plot.java,v 1.20 2009-06-24 15:41:04 tjc Exp $
  **/
 
 package uk.ac.sanger.artemis.components;
@@ -51,7 +51,7 @@ import javax.swing.JPopupMenu;
  *  This class implements a simple plot component.
  *
  *  @author Kim Rutherford
- *  @version $Id: Plot.java,v 1.19 2009-06-05 10:29:31 tjc Exp $
+ *  @version $Id: Plot.java,v 1.20 2009-06-24 15:41:04 tjc Exp $
  **/
 
 public abstract class Plot extends JPanel 
@@ -120,9 +120,13 @@ public abstract class Plot extends JPanel
   private int numPlots;
 
   /** colour array for graph drawing */
-  protected Color frameColour[] = { Color.red, 
+  protected Color frameColour[] = { 
+                                  Color.red, 
                                   new Color(0,200,0), 
                                   Color.blue,
+                                  Color.magenta,
+                                  Color.orange,
+                                  Color.yellow,
                                   Color.black };
   
   private int lastPaintHeight = getHeight();
@@ -965,18 +969,18 @@ public abstract class Plot extends JPanel
 
     g.drawString(desc, 2, font_height);
 
-    if(numPlots < 3)
+    if(numPlots < 3 || numPlots > 10)
       return;
 
     final FontMetrics fm = g.getFontMetrics();
     int font_width = fm.stringWidth("2");
 
-    int width = getWidth() - window_changer.getWidth() - (15*font_width);
+    int width = getWidth() - window_changer.getWidth() -
+               ((5*numPlots)*font_width);
 
-    
     g.translate(width,0);
     ((BaseAlgorithm)getAlgorithm()).drawLegend(g,font_height,
-                                               font_width,frameColour);
+                                               font_width,frameColour, numPlots);
     g.translate(-width,0);
   }
 
diff --git a/uk/ac/sanger/artemis/plot/BaseAlgorithm.java b/uk/ac/sanger/artemis/plot/BaseAlgorithm.java
index 36136f881ee296b1b5a16068a5ab393ebc60a11a..a328ea617a5be1035a623bc2dde28916500b9a74 100644
--- a/uk/ac/sanger/artemis/plot/BaseAlgorithm.java
+++ b/uk/ac/sanger/artemis/plot/BaseAlgorithm.java
@@ -20,7 +20,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  *
- * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/plot/BaseAlgorithm.java,v 1.7 2006-06-23 10:40:14 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/plot/BaseAlgorithm.java,v 1.8 2009-06-24 15:41:04 tjc Exp $
  */
 
 package uk.ac.sanger.artemis.plot;
@@ -38,7 +38,7 @@ import java.awt.BasicStroke;
  *  Strand of DNA, meaning the algorithm can't change strand part way along.
  *
  *  @author Kim Rutherford
- *  @version $Id: BaseAlgorithm.java,v 1.7 2006-06-23 10:40:14 tjc Exp $
+ *  @version $Id: BaseAlgorithm.java,v 1.8 2009-06-24 15:41:04 tjc Exp $
  **/
 
 public abstract class BaseAlgorithm extends Algorithm 
@@ -105,12 +105,11 @@ public abstract class BaseAlgorithm extends Algorithm
 
 
   /**
-  *
   *  Draw in a legend
-  *
   */
   public void drawLegend(Graphics g, int font_height,
-                         int font_width, Color[] frameColour)
+                         int font_width, Color[] frameColour,
+                         int numPlots)
   {
     Graphics2D g2d = (Graphics2D)g;
 
@@ -119,23 +118,18 @@ public abstract class BaseAlgorithm extends Algorithm
 
     if( (strand.isForwardStrand() && !isRevCompDisplay()) ||
         (!strand.isForwardStrand() && isRevCompDisplay()))
-    {
-      g2d.setColor(Color.black);
-      g2d.drawString("1",0,font_height);
-      g2d.drawString("2",font_width*5,font_height);
-      g2d.drawString("3",font_width*10,font_height);
-
-      BasicStroke stroke = (BasicStroke)g2d.getStroke();
-      g2d.setStroke(new BasicStroke(3.f));
-      g2d.setColor(frameColour[0]);
-      g2d.drawLine(font_width*2, lineHgt, font_width*4, lineHgt);
-     
-      g2d.setColor(frameColour[1]);
-      g2d.drawLine(font_width*7, lineHgt, font_width*9, lineHgt);
-
-      g2d.setColor(frameColour[2]);
-      g2d.drawLine(font_width*12, lineHgt, font_width*14, lineHgt);
-      g2d.setStroke(stroke);
+    {     
+      for(int i=0; i<numPlots; i++)
+      {
+        g2d.setColor(Color.black);
+        g2d.drawString(Integer.toString(i+1),i*5*font_width,font_height);
+        
+        BasicStroke stroke = (BasicStroke)g2d.getStroke();
+        g2d.setStroke(new BasicStroke(3.f));
+        g2d.setColor(frameColour[i]);
+        g2d.drawLine(font_width*(2 + (i*5)), lineHgt, font_width*(4 + (i*5)), lineHgt);
+        g2d.setStroke(stroke);
+      }
     }
     else
     {