visual.af

Dithering for Affinity

The dot patterns of old screens and printers, on any layer: Bayer matrices or random noise, 1 to 7 color steps, in the original colors or an ink, highlight and background palette.

Download Dithering .afscripts · 8 KBSign in to download for free

Free, with your Visual.af account.Your Visual.af account takes two clicks with Google.

Already have the Visual.af category? Download the .afscript and import it from that category’s ≡ menu.

  • Free
  • Affinity 3.3 or later
  • Windows and macOS
  • Version 1.0 · September 23, 2026
Before After: Dithering for Affinity BeforeAfter
Visual.af sample illustration, processed with the script.

4 presets to start from

Pick one in the dialog and tweak from there. Every control can still be adjusted.

  • Dithering for Affinity: Default

    Default

    Two-step Bayer 8×8: mint green on midnight blue, with a lime highlight.

  • Dithering for Affinity: Noise

    Noise

    Single-step random noise, like a grainy photocopy.

  • Dithering for Affinity: Retro

    Retro

    Bayer 2×2 in the original colors with 3 px pixels: old console vibes.

  • Dithering for Affinity: Natural

    Natural

    Five-step Bayer 8×8 in the original colors: a fine pattern you barely notice.

Detail zoomed to 200%: each preset applied to the same illustration.

Every control, explained

The same names you see in the script’s dialog.

Algorithm
The pattern: random noise or a 2×2, 4×4 or 8×8 Bayer matrix, which gives ordered patterns.
Pixel size px
The size of each dither pixel, in document pixels.
Color steps
How many light levels there are between background and ink: 1 to 7.
Original colors
Dithers each area in its own color instead of using the palette.
Invert luminance
Inverts the luminance: light areas are dithered as dark and vice versa.
Ink
The dither color when you’re not using the original colors.
Highlight
The color of the brightest areas.
Background
The background color. With “no color”, it stays transparent.

Tips

  • Pixel sizeOn large photos, raise the pixel size so the pattern still shows when the image is scaled down or posted online.
  • A single inkWith one color step and the background set to “no color”, the pattern becomes a single ink on transparency, great for screen printing or risograph.
  • 8-bit colorTurn on “Original colors” and try 2 to 5 steps for a color dither straight out of old video games.

Install

Ready in a minute

Scripts are imported once into Affinity’s library and stay there for good, one click away.

  1. Download the script

    Pick the dialog language, sign in with your account and download the .afscripts file.

  2. Import it into Affinity

    Open Window › Scripting › Scripts Library. In the panel’s menu, choose Import Scripts… and select the file.

  3. Select a layer and run it

    Click the script inside the Visual.af category. The first time, Affinity asks you to confirm that you trust it.

Adding a second effect?

To keep it in the same category, download the .afscript and import it from the Visual.af category’s menu with Import Script…. If you import another .afscripts, Affinity creates “Visual.af 2”: drag the script into the first one and delete the second.

Requirements

Affinity 3.3 or later, on Windows or macOS. The scripts don’t use the internet or touch your files: everything happens inside Affinity.

Frequently asked questions

What is dithering?

A technique for showing many tones with few colors: instead of gradients, it uses dot patterns whose density mimics each tone. It’s the look of old screens and printers.

What’s the difference between Bayer and random?

Bayer arranges the dots with a fixed matrix and gives regular, grid-like patterns. Random scatters them with noise for a more organic grain.

Does it work with text, vectors or groups?

Yes. The script takes the selected layer exactly as it looks, whether it’s a photo, a pixel layer, a group, text or a whole artboard.

How fast is it?

On social media sized images each change takes about a tenth of a second. On 24 megapixel photos, one to two seconds depending on the algorithm.

More scripts