             # update brush 
             @brush.x(@scales.x).extent(@brush.extent())
 
-            # repaint the scales and the brush
-            draw()
+            # repaint the axis, scales and the brush
+            d3.select(@element).select('g.axis').call(@axis.x)
+            d3.select(@element).select('g.grid').call(@grid.x)
+            d3.select(@element).select('g.brush').call(@brush)
 
         d3.select(window).on('resize', resize)
 

            @brush.x(@scales.x).extent(@brush.extent())

            # repaint the scales and axis
            draw()

            if @debug
                console.log("Done zooming, took #{new Date().getTime() - time.start.getTime()} milliseconds.")

                .ticks(d3.time.days.utc, 3)
                #.tickFormat(d3.time.format("%Y-%m-%d"))

        @root.append('g')
            .attr('class', 'axis')
            # TODO compute the 20px translation
            .attr('transform', "translate(0, #{@options.height - 20})")
            .call(@axis.x)

       # grid
        @grid = 
            x: d3.svg.axis()
                .scale(@scales.x)
