OpenGL multi-sampled framebuffer creating black texture

I’ve been trying to figure this out for hours, and it’s making me really frustrated. I don’t see what is wrong with my code. The texture that is supposed to be created by blitting is only making a black texture. I’m not sure if it’s the renderbuffer or the texture that is doing it. Here’s what I got going on:

    public Framebuffer() {
        this.FrameWidth = GameStructure.Window.getWidth();
        this.FrameHeight = GameStructure.Window.getHeight();

        //Multi-sampled FBO
        fboMS = createFBO();

        this.renderbufferAttachmentColorMS();
        this.renderbufferAttachmentDepthMS();

        if(!isComplete()) {
            Console.errMsg("Framebuffer incomplete");
        }
        unbind();

        //Single-sampled FBO
        fbo = createFBO();

        this.textureAttachment(texId);

        if(!isComplete()) {
            Console.errMsg("Framebuffer incomplete");
        }
        unbind();
    }

    private int createFBO() {
        int fbo = glGenFramebuffers();
        glBindFramebuffer(GL_FRAMEBUFFER, fbo);

        return fbo;
    }

    private void textureAttachment(int texId) {
        texId = glGenTextures();
        glBindTexture(GL_TEXTURE_2D, texId);
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, FrameWidth, FrameHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, (ByteBuffer) null);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texId, 0);
        glBindTexture(GL_TEXTURE_2D, 0);
    }

    private void textureAttachmentMS(int texId) {
        texId = glGenTextures();
        glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, texId);
        glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, Settings.antiAlias, GL_RGBA8, FrameWidth, FrameHeight, true);
        glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, texId, 0);
        glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, 0);
    }

    private void renderbufferAttachment(int rbo) {
        rbo = glGenRenderbuffers();
        glBindRenderbuffer(GL_RENDERBUFFER, rbo);
        glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, FrameWidth, FrameHeight);
        glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rbo);
        glBindRenderbuffer(GL_RENDERBUFFER, 0);
    }

    private void renderbufferAttachmentDepthMS() {
        rboDepth = glGenRenderbuffers();
        glBindRenderbuffer(GL_RENDERBUFFER, rboDepth);
        glRenderbufferStorageMultisample(GL_RENDERBUFFER, Settings.antiAlias, GL_DEPTH24_STENCIL8, FrameWidth, FrameHeight);
        glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rboDepth);
        glBindRenderbuffer(GL_RENDERBUFFER, 0);
    }

    private void renderbufferAttachmentColorMS() {
        rboColor = glGenRenderbuffers();
        glBindRenderbuffer(GL_RENDERBUFFER, rboColor);
        glRenderbufferStorageMultisample(GL_RENDERBUFFER, Settings.antiAlias, GL_RGBA8, FrameWidth, FrameHeight);
        glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, rboColor);
        glBindRenderbuffer(GL_RENDERBUFFER, 0);
    }

    public void bind() {
        glBindFramebuffer(GL_FRAMEBUFFER, fboMS);
    }

    public void unbind() {
        glBindFramebuffer(GL_FRAMEBUFFER, 0);
    }

    public void blit() {
        glBindFramebuffer(GL_READ_FRAMEBUFFER, fboMS);
        glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo);

        glBlitFramebuffer(0,0,FrameWidth,FrameHeight,0,0,FrameWidth,FrameHeight,GL_COLOR_BUFFER_BIT,GL_NEAREST);

        unbind();
    }

In textureAttachment you are reassigning the local parameter texId instead of the instance field, which you then would sample from. You put the texId field as parameter into that method, but then generating a new texture id, which gets lost after that method returns.
I remind you again to have a look at this demo.