This can be resolved by turning the compression and quality down (maybe even just compression) using the settings > advanced menu in noVNC. I'm trying to figure out a way to set this by default but nothing I'm trying is working.
# Change the default quality and compression
sed -i 's/this._qualityLevel = 6;/this._qualityLevel = 2;/g' /noVNC/core/rfb.js
sed -i 's/this._compressionLevel = 2;/this._compressionLevel = 0;/g' /noVNC/core/rfb.js
sed -i 's/<input id="noVNC_setting_quality" type="range" min="0" max="9" value="6">/<input id="noVNC_setting_quality" type="range" min="0" max="9" value="2">/g' /noVNC/index.html
sed -i 's/<input id="noVNC_setting_compression" type="range" min="0" max="9" value="2">/<input id="noVNC_setting_compression" type="range" min="0" max="9" value="0">/g' /noVNC/index.html
But it seemed to make no difference.