Hi Matthias, I just made a xtrace (http://packages.debian.org/unstable/x11/xtrace) when scrolling the http://www.w3.org/TR/xslt page with patched dillo (result below). I think this is pretty good already. Just the newly exposed glyphs get rendered. Each word is sent to the X-Server seperately. This might be an area for improvement. Could you try the same on your system, so that we find out, whether the patch does not work for you or whether scrolling is still too CPU consuming even with the working patch? Here is what I did to get the trace: xtrace > /tmp/xtrace.out export DISPLAY=:9 dillo-fltk http://www.w3.org/TR/xslt Then scroll using the triangle of the scrollbar for a while and stop dillo. The resulting file is huge but I am only interested in the repeating sections that result from the scrolling and start with CopyArea. Gruss, Johannes 000:<:c474: 16: Request(56): ChangeGC gc=0x01c00009 values={foreground=0x00000000} 000:<:c475: 28: Request(62): CopyArea src-drawable=0x01c00008 dst-drawable=0x01c00008 gc=0x01c00009 src-x=0 src-y=93 dst-x=0 dst-y=73 width=765 height=467 000:>:c475: Event NoExposure(14) drawable=0x01c00008 minor-opcode=0x0000 major-opcode=0x3e 000:<:c476: 20: Request(59): SetClipRectangles ordering=YXBanded(0x03) gc=0x01c00009 clip-x-origin=0 clip-y-origin=0 rectangles ={x=0 y=540 w=765 h=20}; 000:<:c477: 20: RENDERRequest(154): RenderSetPictureClipRectangles picture=0x01c00036 xOrigin=0 yOrigin=0 rectangles={x=0 y=540 w=765 h=20}; 000:<:c478: 20: Request(59): SetClipRectangles ordering=YXBanded(0x03) gc=0x01c00009 clip-x-origin=0 clip-y-origin=0 rectangles ={x=0 y=540 w=765 h=20}; 000:<:c479: 16: Request(56): ChangeGC gc=0x01c00009 values={foreground=0x00e0e0e0} 000:<:c47a: 20: Request(70): PolyFillRectangle drawable=0x01c00008 gc=0x01c00009 rectangles={x=0 y=0 w=780 h=580}; 000:<:c47b: 20: Request(59): SetClipRectangles ordering=YXBanded(0x03) gc=0x01c00009 clip-x-origin=0 clip-y-origin=0 rectangles ={x=0 y=540 w=765 h=20}; 000:<:c47c: 16: Request(56): ChangeGC gc=0x01c00009 values={foreground=0x00dcd1ba} 000:<:c47d: 20: Request(70): PolyFillRectangle drawable=0x01c00008 gc=0x01c00009 rectangles={x=0 y=540 w=765 h=20}; 000:<:c47e: 60: RENDERRequest(154): RenderCompositeGlyphs8 op=Over(0x03) src=0x01c0000f dst=0x01c00036 maskFormat=0x00000026 glyphset=0x01c00063 xSrc=0 ySrc=0 glyphcmds={deltax=5 deltay=530 glyphs=0x1f,0x5b,0x56,0x4f,0x1d,0x44,0x5 3,0x53,0x4f,0x5c,0x10,0x57,0x48,0x50,0x53,0x4f,0x44,0x57,0x48,0x56,0x12,0x21; }; 000:<:c47f: 40: RENDERRequest(154): RenderCompositeGlyphs8 op=Over(0x03) src=0x01c0000f dst=0x01c00036 maskFormat=0x00000026 glyphset=0x01c00037 xSrc=0 ySrc=0 glyphcmds={deltax=5 deltay=554 glyphs=0x5a,0x4b,0x48,0x51; }; 000:<:c480: 40: RENDERRequest(154): RenderCompositeGlyphs8 op=Over(0x03) src=0x01c0000f dst=0x01c00036 maskFormat=0x00000026 glyphset=0x01c00037 xSrc=0 ySrc=0 glyphcmds={deltax=38 deltay=554 glyphs=0x4c,0x57; }; 000:<:c481: 44: RENDERRequest(154): RenderCompositeGlyphs8 op=Over(0x03) src=0x01c0000f dst=0x01c00036 maskFormat=0x00000026 glyphset=0x01c00037 xSrc=0 ySrc=0 glyphcmds={deltax=47 deltay=554 glyphs=0x5a,0x44,0x51,0x57,0x56; }; 000:<:c482: 40: RENDERRequest(154): RenderCompositeGlyphs8 op=Over(0x03) src=0x01c0000f dst=0x01c00036 maskFormat=0x00000026 glyphset=0x01c00037 xSrc=0 ySrc=0 glyphcmds={deltax=82 deltay=554 glyphs=0x57,0x52; }; 000:<:c483: 40: RENDERRequest(154): RenderCompositeGlyphs8 op=Over(0x03) src=0x01c0000f dst=0x01c00036 maskFormat=0x00000026 glyphset=0x01c00037 xSrc=0 ySrc=0 glyphcmds={deltax=95 deltay=554 glyphs=0x46,0x52,0x53,0x5c; }; 000:<:c484: 40: RENDERRequest(154): RenderCompositeGlyphs8 op=Over(0x03) src=0x01c0000f dst=0x01c00036 maskFormat=0x00000026 glyphset=0x01c00037 xSrc=0 ySrc=0 glyphcmds={deltax=124 deltay=554 glyphs=0x57,0x4b,0x48; }; 000:<:c485: 44: RENDERRequest(154): RenderCompositeGlyphs8 op=Over(0x03) src=0x01c0000f dst=0x01c00036 maskFormat=0x00000026 glyphset=0x01c00063 xSrc=0 ySrc=0 glyphcmds={deltax=144 deltay=554 glyphs=0x5b,0x50,0x4f,0x1d,0x4f,0x44,0 x51,0x4a; }; 000:<:c486: 48: RENDERRequest(154): RenderCompositeGlyphs8 op=Over(0x03) src=0x01c0000f dst=0x01c00036 maskFormat=0x00000026 glyphset=0x01c00037 xSrc=0 ySrc=0 glyphcmds={deltax=203 deltay=554 glyphs=0x44,0x57,0x57,0x55,0x4c,0x45,0 x58,0x57,0x48,0x11; };