diff --git a/uk/ac/sanger/artemis/components/Plot.java b/uk/ac/sanger/artemis/components/Plot.java
index be09296ce31e7813585f8879c755ce18c0e339d8..dd99dfde3d7d545ef5cfab056f82ee1e25dc3f7c 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.13 2008-03-06 14:34:05 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/Plot.java,v 1.14 2008-05-02 12:51:38 tjc Exp $
  **/
 
 package uk.ac.sanger.artemis.components;
@@ -52,7 +52,7 @@ import javax.swing.JPopupMenu;
  *  This class implements a simple plot component.
  *
  *  @author Kim Rutherford
- *  @version $Id: Plot.java,v 1.13 2008-03-06 14:34:05 tjc Exp $
+ *  @version $Id: Plot.java,v 1.14 2008-05-02 12:51:38 tjc Exp $
  **/
 
 public abstract class Plot extends JPanel 
@@ -423,7 +423,63 @@ public abstract class Plot extends JPanel
             }
           });
         }
+   
+        popup.addSeparator();
+        final JMenu graphHeight = new JMenu("Graph Height");
+        popup.add(graphHeight);
+        final JMenuItem smaller = new JMenuItem("smaller");
+        final JMenuItem larger  = new JMenuItem("larger");
+        final JMenuItem setHeight = new JMenuItem("set...");
+        
+        graphHeight.add(smaller);
+        graphHeight.add(larger);
+        graphHeight.add(setHeight);
 
+        smaller.addActionListener(new ActionListener()
+        {
+          public void actionPerformed(ActionEvent e)
+          {
+            Dimension d = getSize();
+            rescale((int)(d.height*0.9f));
+          }
+        });
+        
+        larger.addActionListener(new ActionListener()
+        {
+          public void actionPerformed(ActionEvent e)
+          {
+            Dimension d = getSize();
+            rescale((int)(d.height*1.1f));
+          }
+        });
+        
+
+        setHeight.addActionListener(new ActionListener()
+        {
+
+          public void actionPerformed(ActionEvent e)
+          {
+            final JTextField newGraphHgt = new JTextField(Integer.toString(getSize().height));
+            String window_options[] = { "Set Window Size", "Cancel" };
+            int select = JOptionPane.showOptionDialog(null,
+                                         newGraphHgt,
+                                        "Set Window Size",
+                                         JOptionPane.DEFAULT_OPTION,
+                                         JOptionPane.QUESTION_MESSAGE,
+                                         null, window_options, window_options[0]);
+            
+            if(select == 1)
+              return;
+            
+            try
+            {
+              final int value = Integer.parseInt(newGraphHgt.getText().trim());
+              rescale(value);
+            }
+            catch(NumberFormatException nfe){}
+          }
+        });
+        
         parent.add(popup);
         popup.show(parent, event.getX(), event.getY());
       } 
@@ -471,6 +527,19 @@ public abstract class Plot extends JPanel
     }
   };
 
+  
+  private void rescale(int hgt)
+  {
+    setSize(getSize().width, hgt);
+    
+    if(Plot.this instanceof BasePlot)
+      BasePlot.HEIGHT = getSize().height;
+    else if(Plot.this instanceof FeaturePlot)
+      FeaturePlot.HEIGHT = getSize().height;
+    
+    offscreen = null;
+    revalidate();
+  }
 
   /**
    *  Return true if and only if the given MouseEvent (a mouse press) should