WineFix
WineFix is an APL plugin that patches Wine-specific bugs in Affinity using runtime code patches. It applies Harmony IL transpilers and prefixes to fix issues at the .NET level, and ships a patched d2d1.dll to fix native rendering bugs.
Fixes
- Preferences fail to save on exit — Transpiler replaces
HasPreviousPackageInstalled()withfalse, which otherwise blocks the preferences save path under Wine. - Vector path preview lines drawn incorrectly — Fixed via a patched
d2d1.dllbuilt from Wine 10.18 source with a cubic bezier subdivision algorithm that approximates cubic beziers using multiple quadratic beziers. - Color picker zoom preview shows a black image on Wayland — Replaces
CopyFromScreen(which returns black under Wayland) with aBitBltfrom the canvas window. Auto-detected by default; configurable. - Intermittent startup crash from parallel font enumeration — Forces synchronous font loading to avoid an access violation in
libkernel.dllduring startup. Enabled by default; configurable.
Warning
WineFix currently patches out the Canva sign-in dialog prompt. This is temporary and will be restored once there is a consistent fix for the sign-in browser redirect and Affinity protocol handler.
Color Picker Sampling Modes
The color picker has two sampling modes, configurable in settings:
- Native (default) — Uses Affinity's built-in color sampling pipeline. Colors are sampled in the document's native color space (sRGB, CMYK, wide-gamut, etc.). The highlighted pixel in the zoom preview may differ slightly from the actual sampled color value due to differences in how the zoom preview and the native picker resolve coordinates.
- Exact — Picks the literal pixel color shown in the zoom preview center. Samples from a screen capture in sRGB. The picked color always matches what you see in the zoom, but does not use the document's native color space.
Use Native for color-accurate work (especially CMYK or wide-gamut documents). Use Exact if you want the picked color to always match the zoom preview.
| Native | Exact |
|---|---|
![]() |
![]() |
The highlighted pixel reads R:255 G:255 B:255 — the sampled color differs from what's visible in the zoom preview. |
The highlighted pixel reads R:255 G:148 B:148 — the sampled color matches the actual pixel shown in the zoom preview. |
Known Open Bugs
These are under investigation and not yet patched:
- Accepting crash reporting causes a permanent crash until preferences are cleared
- Embedded SVG document editor crashes after being open for some time
We are open to resolving any Wine-specific bugs. Feel free to open an issue requesting a patch — just keep in mind these bugs take time to research and develop patches for, especially when native code is involved.
Licensing
WineFix is licensed under GPLv2. The bundled d2d1.dll source (under WineFix/lib/d2d1/) is licensed under LGPLv2.1 per upstream Wine licensing.
This is a different license from the rest of APL (MIT). See the LICENSE file for details.

