Did you try moving self.backgroundColor = [UIColor clearColor];
to the init method?
You should only need to run that line once anyway, and I could imagine that calling it in the middle of the draw method might lead to an issue (and in the second call to drawRect, the backgroundColor would already be set to the clearColor, so UIView could ignore it, making your issue go away with the second setNeedsDisplay call)