Figment.so
Mac hostingWebsite hostingGuidesHow to usePricing

Fix Blurry Displays in Remote Mac Sessions

Short answer: run displayplacer list on the remote Mac, pick an HiDPI mode whose rendered pixel count matches your client monitor, then stop the VNC client from rescaling (RealVNC ScalingMode=None; TigerVNC in full-screen with -FullColor). The mapping table below gives a sensible logical resolution for seven common client monitors.

Blurry text in a VNC session is almost never a bandwidth problem. The remote Mac renders at one resolution, the VNC client resamples it to fit your monitor, and bilinear or bicubic interpolation smears every glyph edge. Fix it by making the remote Mac render at the pixel count your local screen actually has, then tell the client to display it 1:1. On Figment this applies equally to the $29 virtual Intel macOS instance (accessed through the browser console) and to M-series Macs from $95/month, provisioned on request — available modes depend on the display adapter the instance exposes, so displayplacer list is the authoritative check on either plan before you commit to a row in the table.

Why VNC Looks Blurry: Resolution Mismatch, Not Bandwidth

A VNC server transmits a rectangular framebuffer. If the remote Mac's virtual display is 1280×800 and your local monitor is 2560×1600 (a common MacBook Retina ratio), the client either:

  • Scales up — doubles each pixel, producing a blocky result, or
  • Smooth-scales — applies bilinear or bicubic interpolation, which looks soft and blurry.

Neither is crisp. The correct fix is to set the remote Mac's display to the same logical resolution as your client monitor, then enable HiDPI ("Retina") mode so the Mac renders at 2× pixel density and the VNC client presents it 1:1. See Apple's own display resolution reference for the built-in UI equivalents of the command-line steps below.

A secondary cause is colour depth. VNC defaults to 24-bit colour but many clients drop to 16-bit when bandwidth is constrained, producing banding that looks like compression artefacts and reduces perceived sharpness.

Check the Remote Mac's Current Display Resolution

Open Terminal on the remote Mac (through the browser console on the Figment $29 VM, or through any existing VNC session on an M-series instance) and run:

# Current resolution from the system profiler
system_profiler SPDisplaysDataType | grep Resolution

# All available modes per screen (install below if missing)
displayplacer list

If displayplacer is not installed:

brew install displayplacer

The output shows every mode your virtual display supports, with HiDPI variants marked. Note the screen ID — it looks like s7462745_1234567890 — you will need it next.

Set a Custom Resolution with displayplacer

displayplacer is an open-source macOS CLI for configuring display resolutions and arrangements. After brew install displayplacer:

# List current screen info and all available modes
displayplacer list

# Set a specific mode by number (preferred — avoids typos)
displayplacer "id:<your-screen-id> mode:<mode-number>"

# Or set by explicit resolution with HiDPI scaling enabled
displayplacer "id:<your-screen-id> res:2560x1600 hz:60 color_depth:8 scaling:on origin:(0,0) degree:0"

scaling:on requests an HiDPI (Retina) mode; scaling:off uses the native pixel count without Retina scaling. On a headless or virtual display adapter the HiDPI variants may not be advertised — if displayplacer list does not show one for your target resolution, the mode cannot be selected until the host adapter exposes it.

To persist the setting, copy the ready-to-run displayplacer "id:... mode:... ..." command that displayplacer list prints at the bottom of its output into a login item or a launchd agent plist.

Resolution Configuration Card

Match your client monitor to the remote Mac display settings. "Logical resolution" is what the Mac reports to apps; "rendered pixels" is what the framebuffer actually contains in HiDPI mode.

Client monitorClient native resolutionRecommended remote logical resHiDPI rendered pixelsdisplayplacer scaling flag
1080p monitor (16:9)1920×10801920×10801920×1080scaling:off
1440p monitor (16:9)2560×14401280×720 HiDPI2560×1440scaling:on
4K monitor (16:9)3840×21601920×1080 HiDPI3840×2160scaling:on
MacBook 13" Retina2560×16001280×800 HiDPI2560×1600scaling:on
MacBook Pro 14" Retina3024×19641512×982 HiDPI3024×1964scaling:on
Ultrawide 34" (21:9)3440×14401720×720 HiDPI3440×1440scaling:on
Standard 1080p laptop1366×7681366×7681366×768scaling:off

How to read this table: set the remote Mac's logical resolution to column 3. With scaling:on the Mac renders at the "rendered pixels" count and the VNC framebuffer delivers that full count. Confirm in displayplacer list that the HiDPI mode is actually listed for your adapter — not every virtual or headless display driver advertises every ratio.

Enable HiDPI Mode in RealVNC and TigerVNC

Setting the remote resolution is half the fix; the VNC client must present the framebuffer without scaling.

RealVNC Viewer (Windows/macOS):

  1. Open Preferences → Expert.
  2. Set ScalingMode to None (or AspectFit only if the resolutions match exactly).
  3. Set Picture quality to High or Automatic. High forces 24-bit colour and disables lossy compression.
  4. If the session window appears smaller than your monitor, enter full-screen (F8 → Full screen) so RealVNC fills the display without upscaling.

TigerVNC (Linux/Windows) — see the vncviewer parameter reference:

  1. Launch with vncviewer -FullColor <host>:<port> — this is actually the TigerVNC default, but setting it explicitly documents intent.
  2. Press Ctrl+Alt+Enter for full-screen.
  3. The -geometry WxH+X+Y flag sets the initial window position and size. To avoid client-side scaling, keep the TigerVNC window at the remote framebuffer's pixel size or use full-screen on a monitor whose native resolution matches it.

Colour Depth: Sharpness vs Bandwidth

Colour depthBits per pixelRough active-session bandwidth (Tight, 1920×1080)Best for
8-bit (256 colours)8 bpp~2–5 MbpsUnusable for design; heavy palette artefacts
16-bit (high colour)16 bpp~5–15 MbpsCode-only work
24-bit (true colour)24 bpp~10–30 MbpsDesign, accurate colour
24-bit + Tight JPEG q9varies~5–15 MbpsBalanced over typical broadband

These are rough estimates for active sessions; idle screens transmit almost nothing and heavy animation can exceed the top of each range. Measure your own link before tuning. On 20+ Mbps broadband keep 24-bit and let Tight compression work — only drop to 16-bit after you confirm the link, not the renderer, is the bottleneck.

Keep the Resolution Across Wake and Reconnect

macOS can reset the virtual display resolution when the VNC client disconnects or the display sleeps. Two complementary approaches:

Option 1 — launchd agent at login: create ~/Library/LaunchAgents/com.company.set-resolution.plist with RunAtLoad pointing at the displayplacer "id:... mode:... ..." command that displayplacer list prints for your preferred layout. This reapplies the mode every login.

Option 2 — suppress display sleep:

sudo pmset -a displaysleep 0

When the display never sleeps, the mode is less likely to be reset. Combine with the launchd agent above for reliability across reboots.

Verify after reconnect:

system_profiler SPDisplaysDataType | grep -E "Resolution|Retina"

If the output shows the wrong resolution after reconnect, the VNC server may be advertising its own preferred mode on each attach — consult its server-side display settings.

Figment Plans for This Workflow

For visual work over VNC, pick the plan whose display adapter and GPU behaviour match the job:

  • $29 virtual Intel macOS — Intel macOS on Linux/KVM, no GPU acceleration or audio, accessed via browser console. Fine for text-heavy remote work and compatible Intel toolchains (including Xcode 26 or earlier). Confirm advertised HiDPI modes with displayplacer list after provisioning.
  • M-series Mac from $95/month — provisioned on request; exact chip, RAM and disk are confirmed in the quote. Choose this for ARM execution, GPU-sensitive design work or Xcode 27.
  • Managed Build Mac $249/month — one M-series Mac with CI setup, backups, monitoring and 30 minutes of monthly support included.

Start a configuration at /mac-hosting/start or compare plans at /mac-hosting.

Related reading:


Subscribe for Figma design and website publishing guides.


Figment.so

Contact

Twitter

Website pricing

Compute index

About

Privacy

Terms