ControlPaint «обманывает», рисуя на рабочем столе.
Чтобы обойти это, попробуйте сами посмотреть размеры. Как только вы доберетесь до границы вашего контроля, перестаньте называть его.
Обновлен:
Похоже, вы не обязательно правильно конвертируете свои размеры.
Вот простой пример всегда рисовать на элементе управления panel1:
private void panel1_Paint(object sender, PaintEventArgs e) {
ControlPaint.DrawReversibleFrame(
new Rectangle(panel1.PointToScreen(new Point(32, 32)), new Size(64, 64)),
panel1.BackColor,
FrameStyle.Dashed);
}