You were right, and your diagnosis was right too - that is exactly the fix.
Two bugs, one cause. The one you hit: pop() never killed the running tween, so two tweens fought over `scale` every frame and the new pop looked like it did nothing.
The one underneath, which I only found because you reported this: `var base = node.scale` read the CURRENT scale. Mid-animation that is a point on the elastic curve, not the rest scale - and it became the new "base", so the node never returned to its real size. Repro: five pops, each interrupted after two frames. Old code ended at scale 0.9089 instead of 1.0000.
flash() had the same defect: stacked tweens, and it faded back to a hardcoded white, so any node whose modulate was not white got repainted permanently.
Fixed in 1.1.0, live now. The rest scale (and colour) is stored per node, the running tween is killed on retrigger, and the exact rest value is restored on finish - TRANS_ELASTIC can land a hair off. Also added pop_reset(node) for when you resize a node on purpose between pops. There is a headless regression test in the repo that fails on the old code and passes on the new one, so this cannot come back silently.
Thanks for writing it up that carefully - it saved everyone who installs this next. The itch download has 1.1.0; pushing the same commit to GitHub is still pending on my side.