To closely match viewport and final render you have to give both the same render settings...which ends up for you waiting for the viewport rendering the same time as for the final render.
Second thing: The human optical perception can easily be tricked into "seeing" something, which isn't there or looks different, which is identical. Example:
Totally different greys are identical
If it doesn't came out totally different (for example a red rose turns blue) it is the result of subtle differences in the render settings playing games with your optical persception. So far the theoretical part of it. :)
If the alpha channel has a greater influence of the results, check the setting of the viewport regarding transperancy and the handling of the alpha channel.