code: func (gf *GLFrame) SetBounds(bounds pixel.Rect) {
  	if bounds == gf.Bounds() {
  		return
  	}
  
  	mainthread.Call(func() {
  		oldF := gf.frame
  
  		_, _, w, h := intBounds(bounds)
  		if w <= 0 {
  			w = 1
  		}
  		if h <= 0 {
  			h = 1
  		}
  		gf.frame = glhf.NewFrame(w, h, false)
  
  		// preserve old content
  		if oldF != nil {
  			ox, oy, ow, oh := intBounds(bounds)
  			oldF.Blit(
  				gf.frame,
  				ox, oy, ox+ow, oy+oh,
  				ox, oy, ox+ow, oy+oh,
  			)
  		}
  	})
  
  	gf.bounds = bounds
  	gf.pixels = nil
  	gf.dirty = true
  }
docs: // SetBounds resizes the GLFrame to the new bounds.