GDI's most significant advantages over more direct methods of accessing the hardware are perhaps its scaling capabilities and its abstract representation of target devices.
Using GDI, it is possible to draw on multiple devices, such as a screen and a printer, and expect proper reproduction in each case.
Code written in this way expects that it is the only user of the video memory, which was not tenable on multi-tasked environment, such as Windows.
The BYTE magazine, in December 1983, discussed Microsoft's plans for a system to output graphics to both printers and monitors with the same code in the forthcoming first release of Windows.
It adds anti-aliased 2D graphics, floating point coordinates, gradient shading, more complex path management, intrinsic support for modern graphics-file formats like JPEG and PNG, and support for composition of affine transformations in the 2D view pipeline.
Their presence in the basic graphics layer greatly simplifies implementations of vector-graphics systems such as Adobe Flash or SVG.
GDI+ is similar (in purpose and structure) to Apple's QuickDraw GX subsystem, and the open-source libart and Cairo libraries.
[7][8][9] Because of the nature of the composition operations, window moves can be faster or more responsive because underlying content does not need to be re-rendered by the application.
[11][12] The combination of GDI and the driver is bidirectional; they receive information from the printer such as whether it is ready to print or is out of paper.
Microsoft has moved away from this printing model with Open XML Paper Specification.
[13] Many applications are also incorrectly coded and fail to release GDI objects after use, which further adds to the problem.
[15][16] Windows 8 and later increase the GDI object limit to 65,536 per user login session.
In Windows 8 and 8.1, a forced log-off occurs as a result of GDI capacity overflow, instead of a reboot.