Index: gtk2_ardour/editor_canvas.cc
===================================================================
--- gtk2_ardour/editor_canvas.cc	(révision 2499)
+++ gtk2_ardour/editor_canvas.cc	(copie de travail)
@@ -311,39 +311,21 @@
 	reset_hscrollbar_stepping ();
 	reset_scrolling_region ();
 
+
+	guint track_canvas_width,track_canvas_height;
+	track_canvas.get_size(track_canvas_width,track_canvas_height);
+	
 	if (edit_cursor) edit_cursor->set_length (canvas_height);
 	if (playhead_cursor) playhead_cursor->set_length (canvas_height);
 
-	if (marker_drag_line) {
-		marker_drag_line_points.back().set_y(canvas_height);
-		marker_drag_line->property_points() = marker_drag_line_points;
-	}
-
-	if (range_marker_drag_rect) {
-		range_marker_drag_rect->property_y1() = 0.0;
-		range_marker_drag_rect->property_y2() = canvas_height;
-	}
-
-	if (transport_loop_range_rect) {
-		transport_loop_range_rect->property_y1() = 0.0;
-		transport_loop_range_rect->property_y2() = canvas_height;
-	}
-
-	if (transport_punch_range_rect) {
-		transport_punch_range_rect->property_y1() = 0.0;
-		transport_punch_range_rect->property_y2() = canvas_height;
-	}
-
-	if (transport_punchin_line) {
-		transport_punchin_line->property_y1() = 0.0;
-		transport_punchin_line->property_y2() = canvas_height;
-	}
-
-	if (transport_punchout_line) {
-		transport_punchout_line->property_y1() = 0.0;
-		transport_punchout_line->property_y2() = canvas_height;
-	}
-		
+	marker_drag_line_points.back().set_y(track_canvas_height);
+	marker_drag_line->property_points() = marker_drag_line_points;
+	range_marker_drag_rect->property_y2() = track_canvas_height;
+	transport_loop_range_rect->property_y2() = track_canvas_height;
+	transport_punch_range_rect->property_y2() = track_canvas_height;
+	transport_punchin_line->property_y2() = track_canvas_height;
+	transport_punchout_line->property_y2() = track_canvas_height;
+	
 	update_fixed_rulers();
 	redisplay_tempo (true);
 
@@ -377,7 +359,17 @@
 
 	// XXX what is the correct height value for the time canvas ? this overstates it
 	time_canvas.set_scroll_region ( 0.0, 0.0, max (last_canvas_unit, canvas_width), canvas_height);
+	
+	guint track_canvas_width,track_canvas_height;
+	track_canvas.get_size(track_canvas_width,track_canvas_height);
+	range_marker_drag_rect->property_y2() = track_canvas_height;
+	transport_loop_range_rect->property_y2() = track_canvas_height;
+	transport_punch_range_rect->property_y2() = track_canvas_height;
+	transport_punchin_line->property_y2() = track_canvas_height;
+	transport_punchout_line->property_y2() = track_canvas_height;
 
+	update_punch_range_view(true);
+
 	controls_layout.queue_resize();
 }
 
Index: gtk2_ardour/editor_markers.cc
===================================================================
--- gtk2_ardour/editor_markers.cc	(révision 2499)
+++ gtk2_ardour/editor_markers.cc	(copie de travail)
@@ -958,9 +958,15 @@
 		double x1 = frame_to_pixel (tpl->start());
 		double x2 = frame_to_pixel (tpl->end());
 		
+		guint track_canvas_width,track_canvas_height;
+		track_canvas.get_size(track_canvas_width,track_canvas_height);
+		
 		transport_punch_range_rect->property_x1() = x1;
 		transport_punch_range_rect->property_x2() = x2;
 		
+		transport_punch_range_rect->property_x1() = (Config->get_punch_in() ? x1 : 0);
+		transport_punch_range_rect->property_x2() = (Config->get_punch_out() ? x2 : track_canvas_width);
+		
 		if (visibility) {
 		        transport_punch_range_rect->show();
 		}