There is a mistake in the handleCursorShapeUpdate code in the VncCanvas.java source file. When using the ignoreCursorUpdates option, the code skips a certain amount of bytes from the network. This calculation is erroneous with the RichCursor encoding, because it does not take into account the bytes per pixel parameter.
The line 945 of VncCanvas.java revision 3561 (the last rev at the time of writing) which is :
rfb.skipBytes(width * height + bytesMaskData);
rfb.skipBytes(width*height*bytesPixel + bytesMaskData);
for the viewer to work correctly.
Attached is the diff -Nau output.