diff --git a/source/javascripts/octopress.js b/source/javascripts/octopress.js
index 961fa46..8e7c1a4 100644
--- a/source/javascripts/octopress.js
+++ b/source/javascripts/octopress.js
@@ -9,13 +9,14 @@ function addExpander(div){
 		'class': 'pre_expander',
     'events': {
       'click': function(){
-        toggleExpander();
+        toggleExpander(this);
       }
     }
 	}).inject(div, 'top');
 }
-function toggleExpander(){
+function toggleExpander(expander){
   var html = '';
+  var expanderPos = expander.getPosition().y;
   if($('main').toggleClass('expanded').hasClass('expanded'))
     html = '« contract';
   else
@@ -23,6 +24,11 @@ function toggleExpander(){
   $$('div.highlight span.pre_expander').each(function(span){
       span.set('html',html);
   });
+  fixScroll(expander, expanderPos);
+}
+function fixScroll(el, position){
+  pos = el.getPosition().y - position;
+  window.scrollTo(window.getScroll().x ,window.getScroll().y + pos);
 }
 function enableCompressedLayout(codeblocks){
   if(!codeblocks.length) return;