| @@ -46,6 +46,8 @@ void FramebufferWidget::draw(NVGcontext *vg) { | |||||
| assert(fabsf(xform[2]) < 1e-6); | assert(fabsf(xform[2]) < 1e-6); | ||||
| Vec s = Vec(xform[0], xform[3]); | Vec s = Vec(xform[0], xform[3]); | ||||
| Vec b = Vec(xform[4], xform[5]); | Vec b = Vec(xform[4], xform[5]); | ||||
| Vec bi = b.floor(); | |||||
| Vec bf = b.minus(bi); | |||||
| // Render to framebuffer | // Render to framebuffer | ||||
| if (dirty) { | if (dirty) { | ||||
| @@ -78,8 +80,7 @@ void FramebufferWidget::draw(NVGcontext *vg) { | |||||
| nvgScale(gFramebufferVg, gPixelRatio * oversample, gPixelRatio * oversample); | nvgScale(gFramebufferVg, gPixelRatio * oversample, gPixelRatio * oversample); | ||||
| // Use local scaling | // Use local scaling | ||||
| Vec bFrac = Vec(fmodf(b.x, 1.0), fmodf(b.y, 1.0)); | |||||
| nvgTranslate(gFramebufferVg, bFrac.x, bFrac.y); | |||||
| nvgTranslate(gFramebufferVg, bf.x, bf.y); | |||||
| nvgScale(gFramebufferVg, s.x, s.y); | nvgScale(gFramebufferVg, s.x, s.y); | ||||
| Widget::draw(gFramebufferVg); | Widget::draw(gFramebufferVg); | ||||
| @@ -92,10 +93,9 @@ void FramebufferWidget::draw(NVGcontext *vg) { | |||||
| } | } | ||||
| // Draw framebuffer image, using world coordinates | // Draw framebuffer image, using world coordinates | ||||
| b = b.floor(); | |||||
| nvgSave(vg); | nvgSave(vg); | ||||
| nvgResetTransform(vg); | nvgResetTransform(vg); | ||||
| nvgTranslate(vg, b.x, b.y); | |||||
| nvgTranslate(vg, bi.x, bi.y); | |||||
| nvgBeginPath(vg); | nvgBeginPath(vg); | ||||
| nvgRect(vg, internal->box.pos.x, internal->box.pos.y, internal->box.size.x, internal->box.size.y); | nvgRect(vg, internal->box.pos.x, internal->box.pos.y, internal->box.size.x, internal->box.size.y); | ||||