You asked me why the witches teleport, so here you go:
1. In RainbowWitch.java in the update() method in the else block you forgot to multiply the speed with the delta time as you have done in the if block, which makes the witches teleport once the player is out of their field of view.
2. In the RainbowWitch constructor you mirror the y coordinate of the cell for the witch, but this is wrong because libgdx already mirrored the map to fit its own coordinate system.
Fix:
In the constructor calculate the position like this:
position.x = (int) (x * StateGame.player.collisionLayer.getTileWidth());
position.y = (int) (y * StateGame.player.collisionLayer.getTileHeight());
In the update method always use "speed * delta" and never use just speed alone.
I guess these changes count as bugfixes, so you could upload a "fixed" version of your game...