diff --git a/uk/ac/sanger/artemis/components/alignment/BamView.java b/uk/ac/sanger/artemis/components/alignment/BamView.java
index b5dfe35203b5737d4f04b42496d19db0aa161f4c..5fb944a03e7bf4c931ee922b7a4081da735e9e1f 100644
--- a/uk/ac/sanger/artemis/components/alignment/BamView.java
+++ b/uk/ac/sanger/artemis/components/alignment/BamView.java
@@ -198,6 +198,7 @@ public class BamView extends JPanel
   private JCheckBoxMenuItem cbStrandStackView = new JCheckBoxMenuItem("Strand Stack");
   private JCheckBoxMenuItem cbIsizeStackView = new JCheckBoxMenuItem("Inferred Size", false);
   private JCheckBoxMenuItem cbCoverageView = new JCheckBoxMenuItem("Coverage", false);
+  private JCheckBoxMenuItem cbCoverageStrandView = new JCheckBoxMenuItem("Coverage by Strand", false);
   private JCheckBoxMenuItem cbLastSelected;
   
   private ButtonGroup buttonGroup = new ButtonGroup();
@@ -328,6 +329,7 @@ public class BamView extends JPanel
     buttonGroup.add(cbStrandStackView);
     buttonGroup.add(cbIsizeStackView);
     buttonGroup.add(cbCoverageView);
+    buttonGroup.add(cbCoverageStrandView);
     addMouseListener(new PopupListener());
 
     jspView = new JScrollPane(this, 
@@ -2385,6 +2387,7 @@ public class BamView extends JPanel
     cbPairedStackView.setFont(viewMenu.getFont());
     cbStrandStackView.setFont(viewMenu.getFont());
     cbCoverageView.setFont(viewMenu.getFont());
+    cbCoverageStrandView.setFont(viewMenu.getFont());
     
     baseQualityColour.setFont(viewMenu.getFont());
     colourByCoverageColour.setFont(viewMenu.getFont());
@@ -2431,9 +2434,8 @@ public class BamView extends JPanel
       {
         laststart = -1;
         if(isStrandStackView())
-        {
           setViewportMidPoint();
-        }
+
         logMenuItem.setEnabled(isIsizeStackView());
         repaint();
       }
@@ -2448,15 +2450,30 @@ public class BamView extends JPanel
         logMenuItem.setEnabled(isIsizeStackView());
         if(cbCoverageView.isSelected())
         {
-          Point p = jspView.getViewport().getLocation();
-          p.y = getHeight();
-          jspView.getViewport().setViewPosition(p);
+          coverageView.setPlotByStrand(false);
+          setViewportBtm();
         }
         repaint();
       }
     });
     viewMenu.add(cbCoverageView);
     
+    cbCoverageStrandView.addActionListener(new ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        laststart = -1;
+        logMenuItem.setEnabled(isIsizeStackView());
+        if(cbCoverageStrandView.isSelected())
+        {
+          coverageView.setPlotByStrand(true);
+          setViewportBtm();
+        }
+        repaint();
+      }
+    });
+    viewMenu.add(cbCoverageStrandView);
+    
     menu.add(viewMenu);
  
     final JCheckBoxMenuItem checkBoxSNPs = new JCheckBoxMenuItem("SNP marks");
@@ -2542,7 +2559,9 @@ public class BamView extends JPanel
         isCoverage = !isCoverage;
         coveragePanel.setVisible(isCoverage);
         
-        if(isCoverage && !cbCoverageView.isSelected())
+        if( isCoverage && 
+            !cbCoverageView.isSelected() && 
+            !cbCoverageStrandView.isSelected() )
           laststart = -1;
         repaint();
       }
@@ -2917,6 +2936,12 @@ public class BamView extends JPanel
     jspView.getViewport().setViewPosition(p);
   }
   
+  private void setViewportBtm()
+  {
+    jspView.getVerticalScrollBar().setValue(
+        jspView.getVerticalScrollBar().getMaximum());
+  }
+  
   protected int getBaseAtStartOfView()
   {
     if(feature_display != null)
@@ -2951,12 +2976,13 @@ public class BamView extends JPanel
     }
     else if(jspView != null)
     {
-      if(!cbCoverageView.isSelected() && nbasesInView >= MAX_BASES)
+      if(!cbCoverageView.isSelected() && !cbCoverageStrandView.isSelected() && nbasesInView >= MAX_BASES)
       {
         cbLastSelected = getSelectedCheckBoxMenuItem();
         cbCoverageView.setSelected(true);
+        coverageView.setPlotByStrand(false);
       }
-      else if(cbCoverageView.isSelected() && nbasesInView < MAX_BASES && cbLastSelected != null)
+      else if((cbCoverageView.isSelected() || cbCoverageStrandView.isSelected()) && nbasesInView < MAX_BASES && cbLastSelected != null)
       {
         cbLastSelected.setSelected(true);
         cbLastSelected = null;
@@ -2965,8 +2991,7 @@ public class BamView extends JPanel
       jspView.setColumnHeaderView(null);
       
       if(!isStrandStackView())
-        jspView.getVerticalScrollBar().setValue(
-            jspView.getVerticalScrollBar().getMaximum());
+        setViewportBtm();
       else
         setViewportMidPoint();
       showBaseAlignment = false;
@@ -3185,7 +3210,7 @@ public class BamView extends JPanel
   {
     if(isBaseAlignmentView(pixPerBase))
       return false;
-    return cbCoverageView.isSelected();
+    return cbCoverageView.isSelected() || cbCoverageStrandView.isSelected();
   }
   
   private boolean isIsizeStackView()
@@ -3210,7 +3235,9 @@ public class BamView extends JPanel
       return cbStrandStackView;
     if(isIsizeStackView())
       return cbIsizeStackView;
-    return cbCoverageView;
+    if(cbCoverageView.isSelected())
+      return cbCoverageView;
+    return cbCoverageStrandView;
   }
   
   protected Selection getSelection()
diff --git a/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java b/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java
index c1a321bab5c6d2ea7fce69eadeb9ecba513a2521..be456c4813c6fb6bc67f834f9261a0259bf53d13 100644
--- a/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java
+++ b/uk/ac/sanger/artemis/components/alignment/CoveragePanel.java
@@ -38,7 +38,6 @@ import java.util.Hashtable;
 import java.util.List;
 
 import javax.swing.JCheckBox;
-import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JComponent;
 import javax.swing.JLabel;
 import javax.swing.JMenuItem;
@@ -61,7 +60,7 @@ import net.sf.samtools.SAMRecord;
     private boolean setMaxBases = false;
     
     private boolean plotByStrand = false;
-    
+
     protected CoveragePanel(final BamView bamView)
     {
       this();
@@ -104,18 +103,6 @@ import net.sf.samtools.SAMRecord;
         }
       });
       menu.add(optMenu);
-      
-      final JCheckBoxMenuItem strandMenu = new JCheckBoxMenuItem("Plot by strand", plotByStrand);
-      strandMenu.addActionListener(new ActionListener()
-      {
-        public void actionPerformed(ActionEvent e)
-        {
-          plotByStrand = strandMenu.isSelected();
-          redraw = true;
-          bamView.repaint();
-        }
-      });
-      menu.add(strandMenu);
     }
     
     /**
@@ -378,6 +365,15 @@ import net.sf.samtools.SAMRecord;
       return redraw;
     }
     
+    /**
+     * @param plotByStrand the plotByStrand to set
+     */
+    protected void setPlotByStrand(boolean plotByStrand)
+    {
+      redraw = true;
+      this.plotByStrand = plotByStrand;
+    }
+    
     private void defineOpts()
     {
       final JPanel opts = new JPanel(new GridBagLayout());
@@ -425,12 +421,7 @@ import net.sf.samtools.SAMRecord;
         showCombined.setEnabled(false);
       c.gridy = c.gridy+1;
       opts.add(showCombined, c);
-      
-      
-      final JCheckBox byStrand = new JCheckBox("Plot by strand", plotByStrand);
-      c.gridy = c.gridy+1;
-      opts.add(byStrand, c);
-      
+
       String window_options[] = { "OK", "Cancel" };
       int select = JOptionPane.showOptionDialog(null, opts, "Coverage Options",
           JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null,
@@ -442,7 +433,7 @@ import net.sf.samtools.SAMRecord;
       redraw = true;
       autoWinSize = autoSet.isSelected();
       includeCombined = showCombined.isSelected();
-      plotByStrand = byStrand.isSelected();
+      
       try
       {
         userWinSize = Integer.parseInt(newWinSize.getText().trim());