Pretty sure that's the expected/desired behavior. When you do this, for each pixel, any of the rgb channels that's 0 will remain at 0, and any that's nonzero will get maxed out to 255. The orange starts at r,g,b = 255,102,0. When you blit it over itself 255 times, the green channel gets maxed out to 255, so you wind up with 255, 255, 0, which is yellow. You'd get something similar for pixels with a color that had a 0 value in the red or green channels. You've got some blue color in the rainbow wheel, but none of the blue pixels actually have 0 values in red and green.
Same thing with the tomato. In addition to black and white pixels, you're seeing red, cyan, or yellow, depending on which values were exactly 0 in the original image.