IntegerScaler

IntegerScaler is a free utility for pixel-perfect integer-ratio scaling (a.k.a. integer scaling) of games with no blur. For example, at the Full HD (1920×1080) resolution on a 4K monitor (3840×2160), each logical pixel is displayed as a square group of four (2×2) physical pixels of the same color.

Such lossless scaling may be useful for modern 3D games as well as for old games and pixel-art games. See e. g.screenshot showing the “SimCity 2000” game () (640×480 native resolution) upscaled to 4K with IntegerScaler.

Unlike similar software, IntegerScaler is compatible not just with Windows 10+, but also with Windows 7. Unlike FSR, DLSS, and other similar scaling algorithms, integer scaling is computationally free, does not affect performance, and has virtually zero lag.

How to use: switch the game to windowed mode and press Alt+F11 when the game window is active (focused). If Alt+F11 does not work for the game, make the game window inactive, use delayed scaling via Ctrl+Alt+F11 or via the “Scale after 5 seconds” item of the menu of the IntegerScaler icon in the notifi­cation area (system tray), then make the game window active back. Make sure the game is operating in the DPI-aware mode. Read below for details.

For Windows 11 users: some users report that in recent versions of Windows 11 at least when using nVidia GPUs (graphics cards), there is blur when using magnification mechanism built into Windows, including when using standard Windows application Magnifier. This cannot be fixed on IntegerScaler level, this should be reported to Microsoft: more reports result in a higher probability that the issue would be resolved.

Tested games

See also
  • SmartUpscale — web-browser extension for preventing blurring images on web pages.
  • bsnes-mt — SNES (Super Nintendo) emulator with support for pixel-perfect integer-ratio scaling.

Features

  • Integer-ratio scaling with no blur for games that support windowed mode.
  • Support for Windows 7 and newer.
  • Ability to auto­matically scale specified games (via auto.txt file).
  • Ability to use custom background color instead of black (the -bg option).
  • Ability to limit the cursor-movement area to game window (the -clipcursor option).
  • Support for scaling with fractional scales (the -fractional option).
  • Ability to specify a custom scaling ratio, a fractional one in particular (the -ratio option).
  • Ability to crop (the -crop option).
  • Ability to resize game window (the -resize option).
  • Ability to disable hotkeys (the -nohotkeys option).
  • Ability to scale automatically with a specified delay after the app start (the -scale option).
  • System-tray icon with menu.
  • Support for two user-interface languages: English and Russian.
  • 100% portable app:

    • does not need installation — just unpack and use;
    • does not write files outside of its folder;
    • does not write to Windows registry;
    • free of dependencies like .NET Framework;
    • can run from an external storage such as a USB flash drive.

The application simulates full-screen mode for windowed games. The scaled image is centered on the screen. The screen area around the image is filled with solid-color background (black by default).

Integer scaling ratio for filling the screen as entirely as possible is calculated automatically and recalculated when scaled-window size is changed according to the game’s resolution.

Scaling is not applied to maximized windows.

Scaling is automatically disabled when the scaled window is closed, and is also temporarily disabled when the scaled window is minimized or maximized, and automatically enabled once window is returned to normal (not minimized, not maximized) state. Scaling also disables temporarily when the scaled window loses focus e. g. as a result of pressing the Alt+Tab keyboard shortcut.

User interface

The user interface of the program consists of the two parts:

  • keyboard shortcuts (hot keys) for controlling scaling;
  • icon in the notification area (system tray) with a menu.

Keyboard shortcuts

Pressing the Alt+F11 keyboard shortcut enables scaling for currently active window. Pressing it again disables scaling regardless of what window is active.

Pressing the Ctrl+Alt+F11 keyboard shortcut enables scaling with a delay of 5 seconds. This allows to enable scaling even in games which block third-party keyboard shortcuts while the game’s window is active: just press the keyboard shortcut while the game window is inactive and then switch to the game window in 5 seconds. The same action can be done via the “Scale after 5 seconds” item of the application menu.

Additionally, the program disables scaling when the Ctrl+Alt+Delete keyboard shortcut is pressed.

Menu

A click on the icon shows the menu that allows to enable scaling, view information about the program, open links to relevant web pages, or close the program.

Autoscaling

It’s possible to automatically apply scaling to user-defined games. Each game is defined and identified by full path to its executable file (*.exe). Those paths should be listed one-per-line in the text file named auto.txt inside the IntegerScaler folder. An example of auto.txt contents:

D:\games\Steam\steamapps\common\GRID Autosport\GRIDAutosport_avx.exe
D:\games\Steam\steamapps\common\Oddworld New n Tasty\NNT.exe
D:\games\Steam\steamapps\common\pCars\pCARS64.exe

There is currently no user interface for editing this list, so a third-party text editor like Windows Notepad should be used.

The auto.txt file should be saved using the UTF-8 encoding, this is required for inter­national characters in paths to game executables to be correctly recognized.

Command-line options

Command-line options (parameters, arguments) allow to use optional advanced features of IntegerScaler. They are not required for basic usage of IntegerScaler.

Options can be specified in the “Target” field on the “Shortcut” tab in properties of the shortcut (*.lnk) to the executable file (*.exe) of IntegerScaler. A shortcut can be created with the item “Create shortcut” of the context menu of the executable file, shown via a right click on the executable file.

Parameters should be specified after a space following a path to the app’s executable file. Parameter name and value are separated with a space. Specific order of parameters does not matter. The parameters can be used separately, independently from each other.

Note that command-line options have nothing to do with auto.txt and will not work if you place them there.

In the option descriptions below, the following notation conventions are used:

  • all-caps words like POSITION1 are placeholders meant to be replaced with actual values;
  • square brackets around an option value mean that the value is optional and can be omitted.
-align POSITION1[,POSITION2] or -a POSITION1[,POSITION2]

Aligns the scaled image relative to the screen.

Possible values for alignment:

  • left (or l) — to the left;
  • top (or t) — to the top;
  • right (or r) — to the right;
  • bottom (or b) — to the bottom.

If just one alignment keyword is specified, the scaled image is centered relative to the screen by the second dimension. If both keywords are specified, the scaled image is positioned to the corresponding corner of the screen. If contradicting keywords are specified (e. g. left,right), the option is ignored.

The keyword order in the value does not matter.

Examples:
  • -align top
  • -align bottom,right
-background COLOR or -bg COLOR

Overrides the color of background filling the screen space around the scaled image. The default background color is black.

An arbitrary color can be specified in the R,G,B format (without spaces), where RG and B are integers in the 0–255 range, corresponding to the red, green and blue color components correspondingly, e. g. 64,128,192.

Some values are predefined:

  • gray — gray;
  • white — white;
  • none — disables background.
Examples:
  • -background 64,128,192
  • -background gray
  • -background none
-clipcursor or -cc
Limits the mouse-movement area to the client area (window area except borders and title bar) of the game window.
-crop [VALUES] or -c [VALUES]

Crops the game window. Syntax of values:

-crop WIDTHxHEIGHT[,POSITION1[,POSITION2]]

The client area of the game window is cropped to the specified size (e. g. 640x480) with optional alignment of the cropped area relative to the original client area. To crop on a single axis, the size on the other axis should be set to zero: e. g. 0x216 will crop the height to 216 pixels while not affecting the width.

Possible values for alignment:

  • left (or l) — to the left;
  • top (or t) — to the top;
  • right (or r) — to the right;
  • bottom (or b) — to the bottom.

If just one alignment keyword is specified, the cropped area is centered relative to the client area of the window by the second dimension. If both keywords are specified, the cropped area is positioned to the corresponding corner.

The keyword order in the value does not matter.

If more than two keywords are specified or the keywords contradict with each other, the option is ignored.

Examples:
  • -crop 640x480
  • -crop 640x480,top,right
  • -crop 0x216,bottom
-crop [WIDTH_L[,WIDTH_T[,WIDTH_R[,WIDTH_B]]]]

The client area of the game is cropped by cropping-out lines of the specified width on the perimeter starting with the left in clockwise order.

Examples:
  • -crop 10
  • -crop 10,20
  • -crop 10,20,30
  • -crop 10,20,30,40
-crop [POSITION1[,POSITION2]]

The client area of the game is cropped automatically for using screen space entirely vertically or horizontally with optional alignment of the cropped area relative to the original client area. Only applies at an integer scale.

Examples:
  • -crop
  • -crop top
  • -crop bottom,right
-fractional or -f
Not recommended.
Enables using fractional (non-integer) scales when scale is calculated automatically. Allows to use screen space fuller, but may introduce distortion and pixel shimmering due to uneven pixel sizes.
-locale LANGUAGE or -l LANGUAGE

Overrides the language of the app’s user interface. Supported values:

  • en — English;
  • ru — Russian.

Default language corresponds to operating system’s user interface if it’s Russian, and English otherwise.

Example:
  • -locale ru
-maxratio RATIO or -mxr RATIO

Allows to specify a maximum scaling ratio. The specified ratio is ignored if it’s lower than 1. The special value system corresponds to OS-level zoom: e. g. it’s equivalent to 2 if OS-level zoom is 200%.

Examples:
  • -maxratio 2
  • -maxratio system
-nohotkeys or -nohk
Disables hot keys (keyboard shortcuts).
-ratio RATIO or -r RATIO

Note: using fractional scales is not recommended because this results in image distortion and pixel shimmering due to uneven pixel sizes.

Allows to specify a custom scaling ratio. Both integer (e. g. 2) and fractional (e. g. 1.5) values are supported — regardless of whether the -fractional option is specified. The specified ratio is ignored if it’s lower than 1. If the ratio of 1 is combined with disabled background, scaling is not done, and just the game window is resized if the -resize parameter is specified.

Example:
  • -ratio 3
-resize WIDTHxHEIGHT or -rs WIDTHxHEIGHT

Not for scaling! For specifying a custom scale, use the -ratio parameter.

Resizes the game window so that its client area (window area except borders and title bar) has the specified size in pixels.

Useful for games that:

  • don’t resize the game window according to in-game resolution;
  • or set a wrong window size not matching the in-game resolution;
  • or don’t allow to change in-game resolution in windowed mode, but adjust it according to window size.

As a result of using the -resize parameter, the size of the rendering (client) area of the game window before scaling and the internal game resolution must be equal. Otherwise using this parameter may result in image distortion and pixel shimmering.

Example:
  • -resize 1920x1080
-scale [DELAY] or -s [DELAY]

Applies scaling in 0.5 seconds after starting IntegerScaler (if no delay is specified) or with the delay specified in milliseconds.

Examples:
  • -scale
  • -scale 3000

Parameter values are case-insensitive.

In the following example, background is overridden to gray, cursor-movement area is limited to the client area of the game window, the game window is resized so that its client width and height are 1920 and 1080 correspondingly, the user-interface language is overridden to Russian, hot keys are disabled and scaling is applied in 3 seconds (3000 ms) after starting IntegerScaler:

IntegerScaler_64bit.exe -background gray -clipcursor -resize 1920x1080 -locale ru -nohotkeys -scale 3000

The same example with shorthand variants of parameters:

IntegerScaler_64bit.exe -bg gray -cc -rs 1920x1080 -l ru -nohk -s 3000

Advantages over scaling via GPU

  • Ability not just to center the scaled image, but also align it to any of the sides or corners of the screen (-align option). This allows, for example, to prevent burn-in of OLED displays, by distributing wear more evenly over the screen area when the image does not occupy the entire screen.
  • Ability to crop the image for fuller usage of screen area (-crop option).
  • Ability to specify a custom scale different from the mathematically maximum one (-ratio option).
  • Ability to use non-integer (fractional) scales for fuller usage of screen area (-ratio and -fractional options). When using GPU for scaling, such ability is only available in Intel drivers.
  • Ability to specify a non-black color of the background around the scaled image (-background option).
  • Unlike the nVidia implementation of integer scaling, IntegerScaler is compatible with HDR, including the “Auto HDR” feature in Windows 11.
  • Unlike the AMD implementation of integer scaling, alignment works properly. In the AMD implementation, the image is not centered vertically, but aligned to top edge of the screen that affects, for example, RX 550 and RX 570 GPUs.
  • Unlike the nVidia and Intel implementations, IntegerScaler works not just under Windows 10+, but also under Windows 7.

Advantages over Windows Magnifier

IntegerScaler has the following advantages over the Windows’ built-in Magnifier:

  • only important part of the window is displayed — with no borders and title bar;
  • the space around the image is filled with black color like in full-screen mode;
  • the image is automatically centered on the screen with no need for precise mouse positioning;
  • scaling ratio is calculated automatically for filling the screen as entirely as possible.

Compatibility with games

For information about compatibility of some games with windowed mode and IntegerScaler, see the table.

Windowed mode

The application is compatible with absolute majority of games that support windowed mode, and does not work with games running in full-screen mode.

If specific game has no explicit setting for switching between full-screen and windowed modes, the Alt+Enter keyboard shortcut may help.

DPI-awareness

It’s important to make sure the game is in DPI-aware mode. The criterion is simple: the game-window size in physical pixels should correspond to in-game resolution. For example, window of a game running at Full HD resolution should occupy about 1/4 (1/2 horizontally and 1/2 vertically) of 4K screen at 200% OS-level zoom, not entire screen.

Games that are not DPI-aware require disabling DPI virtualization (DPI scaling) in executable’s (*.exe) properties, to have proper window size with no possibly blurry scaling automatically applied by Windows to non-DPI-aware applications.

DPI scaling for a specific game can be disabled via properties of the game’s executable (the “Properties” context-menu item).

Windows 10
“Properties” item → “Compatibility” tab → “Settings” section → “Change high DPI settings” button → “High DPI scaling override” section → “Override high DPI scaling behavior. Scaling performed by” checkbox → “Application” dropdown item.
Windows 10 (older versions)
“Properties” item → “Compatibility” tab → “Settings” section → “Override high DPI scaling behavior. Scaling performed by” checkbox → “Application” dropdown item.
Windows 7
“Properties” item → “Compatibility” tab → “Settings” section → “Disable display scaling on high DPI settings” checkbox.

Mouse

Perceived movement speed of mouse cursor may increase proportionally with scaling ratio.

Administrator mode

For scaling games running as admini­strator, IntegerScaler should also be running as admini­strator.

Aero / DWM composition in Windows 7

For scaling to work in Windows 7, the Aero mode (DWM composition) must be enabled (the Windows’ built-in Magnifier app has the same requirement). IntegerScaler automatically tries to enable Aero if it’s disabled. This is irrelevant to Windows 8+ where DWM composition is always enabled.

Frequently asked questions (FAQ)

Can it scale games in full-screen mode?
No. The game to scale must be running in windowed mode. Full-screen integer scaling is possible via graphics drivers with modern graphics cards (GPUs).
Can it scale just one display without blacking-out other displays?
No. The only reasonable way to do this has serious performance impact that would contradict with the app’s purpose of providing the same performance as in full-screen mode, just with no blur.
Why is game window just centered and not scaled?

Most likely your screen resolution is not enough for integer scaling at the chosen resolution of the specific game. Both horizontal and vertical screen resolutions must be at least twice greater than the game-window size. Otherwise, the maximum integer scale is 1.0 (100%) which is equivalent to regular centering with no scaling.

For example, this happens at the window size of 1280×720 (HD) and screen resolution of 1920×1080 (Full HD), because 1920 / 1280 = 1080 / 720 = 1.5. More details are in the answer to a similar question in the article about integer-ratio scaling.

If fuller screen-space usage is more important for you than image quality and having no distortion, you can try to enable using fractional scales with the -f (-fractional) command-line option.

Is it safe to use with anti­cheat-protected games?

IntegerScaler does not inject anything into the game process, so it should be safe to use with anti­cheat-protected games as long as the anti­cheat software does not blindly consider any third-party software running simultaneously with the game as cheat-related.

There were no reports about any anti­cheat-related issues since releasing the first IntegerScaler version in .

Is it open-source?
No. The source code of the app is closed and is not a subject for opening. You might be interested in the author’s IntegerScaling library (C++/Rust/JS/PHP) for calculations related to integer scaling.
Could it support Linux?

Highly unlikely. IntegerScaler uses a scaling mechanism built into Windows and missing in Linux. But integer scaling is already possible in Linux in other ways:

  • xrandr 1.5.1+ supports scaling with no blur via the nearest filter, but some full-screen games are cropped;
  • feature similar to that of xrandr is supported by the nVidia driver as a part of the “Transform Filter” feature;
  • the Proton wrapper used in the Steam Play feature for running Windows games supports integer scaling.