public void updateOffscreenImage(){
        if(offscreenGraphics == null){
            return;
        }
        offscreenGraphics.setColor(Color.WHITE);
        offscreenGraphics.fillRect(0,0,oldActualWidth, oldActualHeight);
        
        int numWide = modelRef.getAnimationDuration(activeRow);
        if(numWide <= 0){
            numWide = CHREditorModel.MAX_FRAMES;
        }
        
        int step = oldWidth / numWide;
        if(step <= 0){
            step = 3;
        }
        int mx = step * numWide;
        int numAnim = modelRef.getNumAnimations();
        int hgt = oldHeight / (numAnim + 1);
        int centeredHgt = (hgt - step)/2;
        int yPos = hgt;
        
        // draw upper controller
        offscreenGraphics.setColor(Color.GREEN);
        offscreenGraphics.drawLine(0,hgt-step,mx,hgt-step);
        offscreenGraphics.fillRect(currentIndex*step,hgt-step,step,step);
        
        for(int row=0;row<numAnim;row++){
            int pos = 0;
            if(row == activeRow) {
                offscreenGraphics.setColor(Color.CYAN);
                offscreenGraphics.fillRect(0,yPos,mx, hgt);
            }
            for(int column=0;column<modelRef.getAnimationDuration(row);column++){
                
                if(currentIndex == column){
                    offscreenGraphics.setColor(Color.RED);
                    offscreenGraphics.drawLine(pos+(step/2),yPos,pos+(step/2),yPos+hgt);
                }
                if(isActiveKeyframe(row,column)){
                    offscreenGraphics.setColor(Color.BLUE);
                    offscreenGraphics.fillOval(pos,yPos+centeredHgt,step,step);
                }
                offscreenGraphics.setColor(Color.LIGHT_GRAY);
                offscreenGraphics.drawLine(pos,yPos,pos,yPos+hgt);
                
                pos += step;
            }
            offscreenGraphics.setColor(Color.BLACK);
            offscreenGraphics.drawLine(0,yPos,mx, yPos);
            offscreenGraphics.drawLine(0,yPos,0, yPos+hgt);
            offscreenGraphics.drawLine(mx,yPos,mx, yPos+hgt);
            
            yPos += hgt;
        }
        offscreenGraphics.setColor(Color.BLACK);
        offscreenGraphics.drawLine(0,yPos,mx, yPos);
        
        offscreenGraphics.setColor(Color.DARK_GRAY);
        offscreenGraphics.drawRect(0,0,oldActualWidth-1, oldActualHeight-1);
    }