             }
             
             if let rEntry = atlas.newAtlas.rectForEntry(String(char)) {
+              tool.bind(atlas.newAtlas.framebuffer.texture)
               tool.program.setUVProperties(
                 xOffset: Float(rEntry.origin.x), yOffset: Float(rEntry.origin.y),
                 xScale: Float(rEntry.size.width), yScale: Float(rEntry.size.height))

  
  // Work out the size of texture we require for a particular count of characters
  private func _required_texture_size(count: Int, size : Size2D<Int>) -> CGSize {
    // Work out the power of two length required for the maximum dimension
    let pwrMaxRequired = Int(ceil(log2(Float(max(size))*sqrt(Float(count)))))
    // Check the power below this, as it MIGHT work with uneven character counts

    UIGraphicsBeginImageContextWithOptions(textureSize, false, 1)
    let context = UIGraphicsGetCurrentContext()
    // We precalculated the adjustment due to screen scaling, so apply it manually
    CGContextScaleCTM(context, CGFloat(scale), CGFloat(scale))
    // Build a character position lookup
    var charLookup : [Character: (x: Int, y: Int)] = [:]
    // Now render every character
