Here is the math to compute the new bitmap size before rotating // pre-compute cosine and sine // radians = (2*PI*Degrees)/360) cosine := cos(radians); sine := sin(radians); // Take 3 corners (not origin) and rotate them x1 := round(-OldHeight * sine);   //note minus sign y1 := round(OldHeight * cosine); x2 := round(OldWidth * cosine - OldHeight * sine); y2 := round(OldHeight * cosine + OldWidth * sine); x3 := round(OldWidth * cosine); y3 := round(OldWidth * sine); // The rotated corners tell us how big // to make the new bitmap. // this code uses the D3 Math Unit! minx := MinIntValue([0,MinIntValue([x1, MinIntValue([x2,x3])])]); miny := MinIntValue([0,MinIntValue([y1, MinIntValue([y2,y3])])]); maxx := MaxIntValue([x1, MaxIntValue([x2,x3])]); maxy := MaxIntValue([y1, MaxIntValue([y2,y3])]); // Compute the new bitmap dimensions NewWidth := maxx - minx; NewHeight := maxy - miny; This could be improved further by adding Bilinear Interpolation (smoothing) during the rotation. I will gladly send code to any requests sent to Brien@tassoft.com