Index: trunk/src/obj_arc.c =================================================================== --- trunk/src/obj_arc.c (revision 19703) +++ trunk/src/obj_arc.c (revision 19704) @@ -745,8 +745,11 @@ void pcb_arc_scale(pcb_arc_t *arc, double sx, double sy, double sth) { - pcb_arc_pre(arc); + int onbrd = (arc->parent.layer != NULL) && (!arc->parent.layer->is_bound); + if (onbrd) + pcb_arc_pre(arc); + if (sx != 1.0) { arc->X = pcb_round((double)arc->X * sx); arc->Width = pcb_round((double)arc->Width * sx); @@ -761,7 +764,8 @@ arc->Thickness = pcb_round((double)arc->Thickness * sth); pcb_arc_bbox(arc); - pcb_arc_post(arc); + if (onbrd) + pcb_arc_post(arc); } /* rotates an arc */ Index: trunk/src/obj_line.c =================================================================== --- trunk/src/obj_line.c (revision 19703) +++ trunk/src/obj_line.c (revision 19704) @@ -856,8 +856,11 @@ void pcb_line_scale(pcb_line_t *line, double sx, double sy, double sth) { - pcb_line_pre(line); + int onbrd = (line->parent.layer != NULL) && (!line->parent.layer->is_bound); + if (onbrd) + pcb_line_pre(line); + if (sx != 1.0) { line->Point1.X = pcb_round((double)line->Point1.X * sx); line->Point2.X = pcb_round((double)line->Point2.X * sx); @@ -872,7 +875,9 @@ line->Thickness = pcb_round((double)line->Thickness * sth); pcb_line_bbox(line); - pcb_line_post(line); + + if (onbrd) + pcb_line_post(line); } void pcb_line_flip_side(pcb_layer_t *layer, pcb_line_t *line) Index: trunk/src/obj_poly.c =================================================================== --- trunk/src/obj_poly.c (revision 19703) +++ trunk/src/obj_poly.c (revision 19704) @@ -186,7 +186,10 @@ void pcb_poly_scale(pcb_poly_t *poly, double sx, double sy) { - pcb_poly_pre(poly); + int onbrd = (poly->parent.layer != NULL) && (!poly->parent.layer->is_bound); + + if (onbrd) + pcb_poly_pre(poly); PCB_POLY_POINT_LOOP(poly); { point->X = pcb_round((double)point->X * sx); @@ -194,7 +197,8 @@ } PCB_END_LOOP; pcb_poly_bbox(poly); - pcb_poly_post(poly); + if (onbrd) + pcb_poly_post(poly); } Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 19703) +++ trunk/src/obj_text.c (revision 19704) @@ -765,8 +765,11 @@ void pcb_text_scale(pcb_text_t *text, double sx, double sy, double sth) { - pcb_text_pre(text); + int onbrd = (text->parent.layer != NULL) && (!text->parent.layer->is_bound); + if (onbrd) + pcb_text_pre(text); + if (sx != 1.0) text->X = pcb_round((double)text->X * sx); @@ -780,7 +783,8 @@ text->thickness = pcb_round((double)text->thickness * sth); pcb_text_bbox(pcb_font(PCB, text->fid, 1), text); - pcb_text_post(text); + if (onbrd) + pcb_text_post(text); }