Index: trunk/src/obj_poly.c =================================================================== --- trunk/src/obj_poly.c (revision 19469) +++ trunk/src/obj_poly.c (revision 19470) @@ -1063,11 +1063,11 @@ continue; /* iterate over the vectors of the contour */ - pcb_poly_draw_tr_offs(&it, -offs); + pcb_poly_draw_tr_offs(&it, offs); /* iterate over all holes within this island */ for(pl = pcb_poly_hole_first(&it); pl != NULL; pl = pcb_poly_hole_next(&it)) - pcb_poly_draw_tr_offs(&it, -offs); + pcb_poly_draw_tr_offs(&it, offs); } return np; Index: trunk/src/obj_pstk.c =================================================================== --- trunk/src/obj_pstk.c (revision 19469) +++ trunk/src/obj_pstk.c (revision 19470) @@ -376,7 +376,7 @@ double vl = pcb_round(-dthick/2); long n; - if (!shape->data.poly.inverted) + if (shape->data.poly.inverted) dthick = -dthick; vl = pcb_round(dthick/2); Index: trunk/src/obj_pstk_proto.c =================================================================== --- trunk/src/obj_pstk_proto.c (revision 19469) +++ trunk/src/obj_pstk_proto.c (revision 19470) @@ -936,7 +936,7 @@ } else { pcb_polo_t *p, p_st[32]; - double vl = pcb_round(-val/2); + double vl = pcb_round(val/2); if (shp->data.poly.len >= sizeof(p_st) / sizeof(p_st[0])) p = malloc(sizeof(pcb_polo_t) * shp->data.poly.len); Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 19469) +++ trunk/src/obj_text.c (revision 19470) @@ -822,7 +822,7 @@ } pcb_polo_norms(pp, max); a2 = pcb_polo_2area(pp, max); - if (a2 > 0) + if (a2 < 0) dv = -0.5; else dv = 0.5; Index: trunk/src/polygon_offs.c =================================================================== --- trunk/src/polygon_offs.c (revision 19469) +++ trunk/src/polygon_offs.c (revision 19470) @@ -58,6 +58,8 @@ { double ax, ay, al, a1l, a1x, a1y; + offs = -offs; + /* previous edge's endpoint offset */ ax = (*x0) - prev_x; ay = (*y0) - prev_y; Index: trunk/src/polygon_offs.h =================================================================== --- trunk/src/polygon_offs.h (revision 19469) +++ trunk/src/polygon_offs.h (revision 19470) @@ -42,13 +42,13 @@ /* Calculate and return the double of the area of a cached polygon */ double pcb_polo_2area(pcb_polo_t *pcsh, long num_pts); -/* Ortho-shift all edges of a polygon. Positive offset means shrink. */ +/* Ortho-shift all edges of a polygon. Positive offset means grow. */ void pcb_polo_offs(double offs, pcb_polo_t *pcsh, long num_pts); /* Orhto-shift an edge specified by x0;y0 and x1;y1. Calculate the new edge points by extending/shrinking the previous and next line segment. Modifies the target edge's start and end coords. Requires cached normals - Positive offset means shrink. */ + Positive offset means grow. */ void pcb_polo_edge_shift(double offs, double *x0, double *y0, double nx, double ny, double *x1, double *y1,