Index: gtk2_ardour/midi_streamview.cc
===================================================================
--- gtk2_ardour/midi_streamview.cc	(revision 7198)
+++ gtk2_ardour/midi_streamview.cc	(working copy)
@@ -299,7 +299,7 @@
 	StreamView::update_contents_height();
 	_note_lines->property_y2() = height;
 	
-	draw_note_lines();
+	apply_note_range( lowest_note(), highest_note(), true);
 }
 
 void
@@ -362,13 +362,42 @@
 {
 	_highest_note = highest;
 	_lowest_note = lowest;
+	
+	int range = _highest_note - _lowest_note;  
+	int pixels_per_note = floor (height/range);
+	
+	/* do not grow note display beyont 10 pixels */
+	if (pixels_per_note > 10){
+		
+		int available_note_range = floor ((height)/10);
+		int additional_notes = available_note_range - range;
+		
+		/* distribute additional notes to higher and lower ranges, clamp at 0 and 127 */
+		for (int i = 0; i < additional_notes; i++){
+			
+			if (i % 2 && _highest_note < 127){
+				_highest_note++;
+			}
+			else if (i % 2) {
+				_lowest_note--;
+			}
+			else if (_lowest_note > 0){
+				_lowest_note--;
+			}
+			else {
+				_highest_note++;
+			}
+		}
+	}
+	
 	note_range_adjustment.set_page_size(_highest_note - _lowest_note);
 	note_range_adjustment.set_value(_lowest_note);
+	
 	draw_note_lines();
 
 	if (to_region_views) {
 		for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
-			((MidiRegionView*)(*i))->apply_note_range(lowest, highest);
+			((MidiRegionView*)(*i))->apply_note_range(_lowest_note, _highest_note);
 		}
 	}
 
