The spec says:
The canvas APIs must perform color correction at only two points: when rendering images with their own gamma correction and color space information onto the canvas, to convert the image to the color space used by the canvas (e.g. using the 2D Context's drawImage() method with an HTMLImageElement object), and when rendering the actual canvas bitmap to the output device.
It's a Safari bug then.
I don't believe there is workaround unless you manually adjust the pixel colors in to match the color space in Safari by implementing your own filter.