Yeah, I think you might be misunderstanding how morphing works. Basically it takes the path data (the stuff in the "d" attribute of a <path>) and interpolates between two values. Well, that's an oversimplification because it does a ton of stuff under the hood to make that happen in an intuitive way. It does not alter the fill color or other attributes as well, but of course you could animate those too (separately) if you want. But morphing is about the shape itself, and it honors whatever coordinates you feed in.
So in your example, you've got a completely different <svg> element that's elsewhere in the DOM, and the <polygon> in there that's your end shape (the rectangle) has certain coordinates baked into the shape itself - those are what are being used when morphing the "O" shape.
It would definitely be simplest if you just put both shapes into the same <svg> element so that they share a coordinate system. If you can't do that, it makes things much, much more complicated. You'd have to do a bunch of conversions between coordinate systems (and remember, each could have transforms applied) and edit all of the coordinates in the shape accordingly. Possible? Sure. Easy? Nope, not for most developers. I guess you could also animate the <svg> so that it sits on top of the other one and stretches to match coordinate systems, but even that isn't exactly simple.
Is there any reason you can't have both shapes in the same <svg> element?