тест-кейс готовить лениво 
нарисую в виде псевдокода для экрана с размером 360 на 640:
Code:
iRect1 = TRect(TPoint(0,0),TSize(360,640));
iRect2 = TRect(TPoint(0,100),TSize(360,200));
EnableWindowTransparency();
Window().SetBackgroundColor(TRgb(0,0,0,0));
SetRect(iRect2);
gc.DrawRect(Rect());
// на этом этапе на экране на фоне стартового рабочего стола изображен прямоугольник с абсолютными координатами (0,100)
// приходит TPointerEvent::EDrag
SetRect(iRect1);
// обрабатываем TPointerEvent и сдвигаем прямоугольник
iRect2.Move(TPoint(0,50));
// рисуем его
gc.DrawRect(iRect2);
// на этом этапе на экране на фоне стартового рабочего стола изображен прямоугольник с абсолютными координатами (0,150)
// приходит TPointerEvent::EButton1Up, возвращаем контролу его рабочие размеры
SetRect(iRect2);
// а вот здесь проблема, на экране на фоне стартового рабочего стола изображен прямоугольник с абсолютными координатами (0,150+150), т.е.смещенный
// рисуем
gc.DrawRect(Rect());
// здесь опять все нормально, изображен прямоугольник с абсолютными координатами (0,150)