The following steps can be used to reduce OnsetDelay values:
1) Reduce the frame size of objects if you do not require the use of the full screen. See NEW FEATURE: Default frame size lowered to 75% 
2) If you are not using the default resolution, reduce the resolution of the screen if a larger resolution is not required. The Display device in E-Studio defaults to 640x480 and 16-bit, which is typically supported by most video adapters. You can change the Display device properties in the experiment if you double-click the Experiment object, click on the Devices tab, select the Display device, and click Edit. Be sure to change the resolution and bit depth properties to those supported by your video adapter.
3) Use duration values that are divisible by the refresh rate. See See article 17198 (direct link coming soon)
4) Use RefreshAlignment. When using RefreshAlignment, the OnsetDelay may be negative. This should overall be considered an acceptable value for OnsetDelay. See NEW FEATURE: RefreshAlignment locks into nearest refresh vertical blank to promote timing accuracy 
5) Use PreRelease. See INFO: Using PreRelease to Maintain Millisecond Timing 
6) Set GeneratePreRun to TopOfProcedure. See NEW FEATURE: GeneratePreRun and GeneratePostRun properties