Multisample & glCopyTexSubImage2D

I have a glcontext setup with multisample.
It works fine and looks good at 16 samples.

I need to copy the pixel results at a certain point in the render to a texture.
I have tried this with glCopyTexImage2D and glCopyTexSubImage2D.
Both calls work.
But the data they get does not contain all the samples yet.

For example, the multisample view renders this high quality output:

(magnified to show pixels clearly)


But when I go grab the pixels into my texture, the quality is lower:

(after some experimentation, this turns out to be how it looks when multisample is set to 2)

I think that multisample render target hasn’t finished pushing the samples into the framebuffer yet.
I have tried calling glFinish() and glFlush() before doing my copy command, but it didn’t change anything.

Anyone know how to force a multisample render target to copy it’s final output to a texture?