Found out that in cocos2d-x 3 RenderTexture has premultiplied alpha, so I need to use the following code for my RenderTexture to look the same as with cocos2d-x 2.
Everything works OK if I call the function in draw(Renderer *renderer, const kmMat4 &transform, bool transformUpdated). But I guess I have to call GL::blendResetToCache after it. If I do, the blend func gets reset and everything is wrong again (because actual draw is done in a separate function). The question is where should I call the glBlendFuncSeparate, shouldn't it be added to Node just as setBlendFunc, so that it is set right before actual rendering?