Index: trunk/src/draw_composite.c =================================================================== --- trunk/src/draw_composite.c (revision 11055) +++ trunk/src/draw_composite.c (revision 11056) @@ -58,8 +58,10 @@ { if (ctx->thin) pcb_gui->set_color(Output.pmGC, ctx->color); - else + else { pcb_gui->use_mask(HID_MASK_CLEAR); + pcb_gui->set_drawing_mode(PCB_HID_COMP_NEGATIVE, ctx->screen); + } } static void comp_start_add_(comp_ctx_t *ctx) @@ -66,8 +68,10 @@ { if (ctx->thin) pcb_gui->set_color(Output.pmGC, "erase"); - else + else { pcb_gui->use_mask(HID_MASK_SET); + pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE, ctx->screen); + } } static void comp_start_sub(comp_ctx_t *ctx) @@ -100,6 +104,8 @@ pcb_gui->use_mask(HID_MASK_AFTER); comp_fill_board(ctx, HID_MASK_AFTER); pcb_gui->use_mask(HID_MASK_OFF); + + pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, ctx->screen); } static void comp_init(comp_ctx_t *ctx, int negative) @@ -108,6 +114,7 @@ return; pcb_gui->use_mask(HID_MASK_INIT); + pcb_gui->set_drawing_mode(PCB_HID_COMP_RESET, ctx->screen); if (ctx->invert) negative = !negative; Index: trunk/src/draw_ly_spec.c =================================================================== --- trunk/src/draw_ly_spec.c (revision 11055) +++ trunk/src/draw_ly_spec.c (revision 11056) @@ -154,7 +154,10 @@ */ if (pcb_gui->can_mask_clear_rats) pcb_gui->use_mask(HID_MASK_CLEAR); + pcb_gui->set_drawing_mode(PCB_HID_COMP_RESET, drawn_area); + pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE, drawn_area); pcb_r_search(PCB->Data->rat_tree, drawn_area, NULL, pcb_rat_draw_callback, NULL, NULL); + pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, drawn_area); if (pcb_gui->can_mask_clear_rats) pcb_gui->use_mask(HID_MASK_OFF); }