Yosemite: Accessibility zoom + multiple monitors = poor performance Ever since upgrading to Yosemite, the accessibility zoom feature is unusable when connected to an external monitor.

Steps to reproduce:


Enable Zoom in System Preferences - Accessibility.
Connect an external monitor, not using mirroring (second desktop).
Zoom in using CTRL+(two finger gesture) - or OPT-CMD-=


Expected:


Zoom is buttery smooth, everything renders at 60fps, no lag whatsoever


Actual:


All display on both screens is delayed, including video playback, mouse movement and keystrokes/text entry. System becomes unusably slow while zoomed in (8-12fps, while still trying to "catch up" on missed frames). It takes a long time to "recover" from a zoom by zooming back out.


Hardware:


MacBook Pro (Retina, 15-inch, Early 2013)
According to other sources, this seems to affect all Mac hardware running Yosemite


This has been reported on the Apple discussion forums multiple times: one
two
three
four

I have not been able to find any acceptable solution.

Note that zoom performance is "perfect" (read: acceptable) once the external monitor is disconnected. It is also "perfect" when mirroring is used.

Edit: Removed link to http://testufo.com as it's too fragile under normal circumstances to be a useful reproduction.

Edit 2, Nov 18 2014: After upgrading to Yosemite 10.10.1, the performance is slightly improved, but still not up to previous standards. For example, go to https://kraken.io/ and move your mouse over the image slider. Then try doing the same thing zoomed in - it's unbearably slow. It feels like when zoom is activated (on multiple screens), it drops down to software rendering or something equally slow. The same test with only the single screen is perfect.

Edit 3: Other workarounds that have been suggested have had poor results:


Restart (or kill the WindowServer process, which will log you out). The first few minutes of usage are comparatively smooth, but still not 100%.


Edit 4: Enabling Increase contrast seems to be the best workaround so far. See my 2nd answer.

Edit 5: This is now completely fixed in 10.10.2.
This is now fixed in OS X 10.10.2