Have you tried clear_and_redraw instead of just redraw, this will first clear the drawing area to the default background color first. The following code sample works: class APPLICATION inherit EV_APPLICATION create make_and_launch feature {NONE} -- Initialization make_and_launch -- Initialize and launch application do default_create prepare launch end prepare local l_da: EV_DRAWING_AREA l_vb: EV_VERTICAL_BOX l_but: EV_BUTTON do -- create and initialize the first window. create first_window create l_da l_da.expose_actions.extend (agent on_redraw (l_da, ?, ?, ?, ?)) create l_vb create l_but.make_with_text ("Click Me") l_but.select_actions.force_extend (agent handle_click (l_da)) l_vb.extend (l_da) l_vb.extend (l_but) first_window.extend (l_vb) -- Show the first window. --| TODO: Remove this line if you don't want the first --| window to be shown at the start of the program. first_window.show end handle_click (a_drawing_area: EV_DRAWING_AREA) local l_counter: INTEGER do from l_counter := 1 until l_counter = 1000 loop i := i + 1 a_drawing_area.clear_and_redraw process_events l_counter := l_counter + 1 end end on_redraw (a_drawing_area: EV_DRAWING_AREA; a_x, a_y, a_width, a_height: INTEGER) do a_drawing_area.draw_text (20, 20, i.out) end i: INTEGER feature {NONE} -- Implementation first_window: EV_TITLED_WINDOW -- Main window. end