I did it!
The solution was to set invertY to false when creating the texture, like so:
myMaterial.diffuseTexture = new Texture('/textures/Texture_01.png', this.scene, true, false);
https://doc.babylonjs.com/typedoc/classes/BABYLON.Texture
In addition to fixing the ignored UVs this also fixed the coloring problems, so it was indeed all related. My assumption is that the textures get inverted on the Y axis by default during import, which would explain why it worked OK on the middle but not the top or bottom parts of the texture. It’s curious that none of the resources I checked mentioned this. Still, if I’m missing or misunderstanding something your clarification is entirely welcome.
