diff --git a/ChangeLog b/ChangeLog
index 2c1d4e0af0443ae9c1a9fd4610ae9f0e0a861360..4c5da09af6841807c14bc5e7f432b94f04417833 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
 Version XX
+	From the 'View' menu added 'Adjust panel heights...' option in ACT 
+	for adjusting their heights (BAM, VCF, plots, comparisons) by giving 
+	them different weights in order to distribute the space between each 
+	component.
+
 	Labels can optionally be added to the header of base position plots
 	and these are used in the legend, e.g.
 	# colour 5:150:55 255:0:0 0:255:0 0:0:255 100:100:100 50:150:50
diff --git a/uk/ac/sanger/artemis/components/ActPanelResizer.java b/uk/ac/sanger/artemis/components/ActPanelResizer.java
new file mode 100644
index 0000000000000000000000000000000000000000..cb250771013387c31d6f414c2dee3ac51c2b116b
--- /dev/null
+++ b/uk/ac/sanger/artemis/components/ActPanelResizer.java
@@ -0,0 +1,181 @@
+/* 
+ * This file is part of Artemis
+ *
+ * Copyright(C) 2013  Genome Research Limited
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or(at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ */
+package uk.ac.sanger.artemis.components;
+
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JSeparator;
+import javax.swing.JSlider;
+import javax.swing.event.ChangeEvent;
+
+import uk.ac.sanger.artemis.circular.TextFieldFloat;
+
+/**
+ * Enable fine tuning of the heights of the individual panels
+ * (plots, BAM view, VCF view, comparisons).
+ */
+class ActPanelResizer extends JFrame
+{
+  private static final long serialVersionUID = 1L;
+  private GridBagConstraints c = new GridBagConstraints();
+  
+  ActPanelResizer(final MultiComparator comparator, final GridBagLayout layout)
+  {
+    setTitle("Panel Height Weights");
+    final JPanel panel = (JPanel) getContentPane();
+    panel.setLayout(new GridBagLayout());
+    c.anchor = GridBagConstraints.WEST;
+
+    for(int i = 0 ; i < comparator.getEntryGroupArray().length ; i++)
+      showWeighty(comparator, layout, i);
+    
+    c.gridx = 0;
+    c.gridy+=1;
+    final JButton close = new JButton("CLOSE");
+    close.addActionListener(new ActionListener(){
+      public void actionPerformed(ActionEvent arg0)
+      {
+        dispose();
+      }
+    });
+    getContentPane().add(close, c);
+    
+    pack();
+    Utilities.centreFrame(this);
+    setVisible(true);
+    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+  }
+  
+  /**
+   * Display the panel height weighting for an entry
+   * @param comp
+   * @param layout
+   * @param idx - entry index
+   */
+  private void showWeighty(final MultiComparator comp, final GridBagLayout layout, int idx)
+  {
+    if(idx > 0)
+      addSeparator();
+    
+    c.gridx = 0;
+    c.gridy+=1;
+    final JLabel l = new JLabel("SEQUENCE "+(idx+1));
+    l.setFont(l.getFont().deriveFont(Font.BOLD));
+    getContentPane().add(l, c);
+
+    // plots
+    if(comp.getBasePlotGroupArray()[idx].getVisibleCount() > 0)
+      showComponentWgtY(comp, layout, comp.getBasePlotGroupArray()[idx], "Plots");
+    
+    // bams
+    if(comp.getBamPanelArray()[idx].isVisible())
+      showComponentWgtY(comp, layout, comp.getBamPanelArray()[idx], "BAM view");
+    
+    // vcfs
+    if(comp.getVcfPanelArray()[idx].isVisible())
+      showComponentWgtY(comp, layout, comp.getVcfPanelArray()[idx], "VCF view");
+
+    if (idx < comp.getAlignmentViewerArray().length )
+    {
+      addSeparator();
+      // comparison panel
+      showComponentWgtY(comp, layout, comp.getAlignmentViewerArray()[idx], "Comparison");
+    }
+  }
+  
+
+  /**
+   * Display the panel height weight for a component
+   * @param comparator
+   * @param layout
+   * @param component
+   * @param label
+   */
+  private void showComponentWgtY(final MultiComparator comparator, 
+                                 final GridBagLayout layout, 
+                                 final JComponent component, 
+                                 final String label)
+  {
+    c.gridx = 0;
+    c.gridy+=1;
+
+    getContentPane().add(new JLabel(label), c);
+    final Dimension d = new Dimension(80,25);
+    final GridBagConstraints cc = layout.getConstraints(component);
+    final TextFieldFloat wt = new TextFieldFloat();
+    final JSlider slider = new JSlider(0, 10, (int) (cc.weighty * 10));
+    slider.setToolTipText("set the y-weight to between 0 - 1");
+    wt.setPreferredSize(d);
+    wt.setMaximumSize(d);
+    wt.addActionListener(new ActionListener(){
+      public void actionPerformed(ActionEvent arg0)
+      {
+        slider.setValue((int) (wt.getValue()*10));
+        cc.weighty = wt.getValue();
+        layout.setConstraints(component, cc);
+        component.revalidate();
+        comparator.validate();
+        comparator.repaint();
+      }
+    });
+
+    slider.addChangeListener(new javax.swing.event.ChangeListener()
+    {
+      public void stateChanged(ChangeEvent e)
+      {
+        double y = slider.getValue() / 10.d;
+        wt.setValue(y);
+        cc.weighty = y;
+        layout.setConstraints(component, cc);
+        component.revalidate();
+        comparator.validate();
+        comparator.repaint();
+      }
+    });
+    
+    c.gridx+=1;
+    getContentPane().add(slider, c);
+    wt.setValue(cc.weighty);
+    c.gridx+=1;
+    getContentPane().add(wt, c);
+  }
+  
+  /**
+   * Add a separator between rows
+   */
+  private void addSeparator()
+  {
+    c.gridx = 1;
+    c.gridy+=1;
+    c.fill = GridBagConstraints.HORIZONTAL;
+    getContentPane().add(new JSeparator(), c);
+  }
+}
\ No newline at end of file
diff --git a/uk/ac/sanger/artemis/components/MultiComparator.java b/uk/ac/sanger/artemis/components/MultiComparator.java
index 84382db677342cf15edf48eb0123c828d48ae730..833807e14d938ad8f941b5d3e06fef55d3700e1f 100644
--- a/uk/ac/sanger/artemis/components/MultiComparator.java
+++ b/uk/ac/sanger/artemis/components/MultiComparator.java
@@ -141,6 +141,8 @@ public class MultiComparator extends JFrame
 
   /** Used to show the progress of loading file. */
   private InputStreamProgressListener progress_listener;
+  
+  private GridBagLayout layout = new GridBagLayout();
 
   /**
    *  Initialise entry_group_array and comparison_data_array and create all
@@ -257,7 +259,7 @@ public class MultiComparator extends JFrame
 
     setFont(getDefaultFont());
     makeMenus();
-    getContentPane().setLayout(new GridBagLayout());
+    getContentPane().setLayout(layout);
 
     GridBagConstraints c = new GridBagConstraints();
     c.gridwidth  = GridBagConstraints.REMAINDER;
@@ -716,6 +718,15 @@ public class MultiComparator extends JFrame
       graph_menu.add(this_graph_menu);
     }
 
+    final JMenuItem resize = new JMenuItem("Adjust panel heights ...");
+    resize.addActionListener(new ActionListener(){
+      public void actionPerformed(ActionEvent arg0)
+      {
+        new ActPanelResizer(MultiComparator.this, layout);
+      }
+    });
+    view_menu.add(resize);
+
     final JMenu display_menu = new JMenu("Display");
     display_menu.setMnemonic(KeyEvent.VK_D);