Its working exactly how it should in your example. Take a look at this which was taken directly from the spec
the source image, A, is the shape or image being rendered, and the destination image, B, is the current state of the bitmap.
Display the source image wherever both the source image and destination image are opaque. Display transparency elsewhere.
In that definition only the source image will be displayed. Since its drawing the destination image and then subtracting the source image, you get a lighter overall image.
Another example would be source-over
, you would expect the transparencies to be added to eachother, likewise then using destination-in
and source-in
the transparency should be reduced due to the subtraction of the shape.
Thanks @simonsarris for finding this gem The Porter Duff Compositing Operators