Why not use QueryPerformanceCounter and QueryPerformanceFrequency?? They will be a lot more accurate than GetTickCount (which i assume you use now). I alway's calculate the "FrameTime", which is the time it took to render the last frame. I make this value globally available and i multiply it when moving/scaling etc...

[pascal]
Obj.x := Obj.x + 100*FrameTime;
[/pascal]

Will move the object 100 pixels to the right in one second. When running @ 60FPS, your FrameTime should be 1/60.

Hope it helps.