 <p>All the bottlenecks you posted seem to be from setting the BorderWidth property on your shapes. I'm guessing you do repainting or updating the layout of the shapes in BorderWidth. If you set BorderWidth on a container there will a lot of unnecessary repaints and layout changes which are kind of slow in WinForms (specially for layouts, if your shapes inherit from Control).</p> <p>Might I suggest a <em>BeginUpdate</em> *EndUpdate* mechanism like some other WinForms controls?</p>