     for i in instruments {
       // Bind the framebuffer for this instrument
       drawing.bind(i.framebuffer)
+      glViewport(0, 0, GLsizei(i.framebuffer.size.w), GLsizei(i.framebuffer.size.h))
+      
       // Reassign the projection matrix. Upside-down, to match texture
       drawing.program.projection = GLKMatrix4MakeOrtho(0,
         i.instrument.screenWidth, i.instrument.screenHeight, 0, -10, 10)

  
  func AddInstrument(item : Instrument)
  {
    // Work out how big in pixels this needs to be, to fill the screen
    let pixelSize = Size2DInt(
      w: Int(item.screenWidth * Float(UIScreen.mainScreen().scale)),
      h: Int(item.screenHeight * Float(UIScreen.mainScreen().scale)))

    let buffer = drawing.createTextureFramebuffer(pixelSize,
      depth: false, stencil: true)

    let newInst = PanelEntry(instrument: item, framebuffer: buffer)
    instruments.append(newInst)

    drawing.program.setUseTexture(true)
    drawing.program.setUVProperties(xOffset: 0, yOffset: 0, xScale: 1, yScale: 1)
    drawing.program.setColor(red: 1, green: 1, blue: 1)
//    glDisable(GLenum(GL_BLEND));
    
    for i in instruments {
      // Now, draw the textured square
