I reported it (with a solution) earlier as an issue but has been ignored by the developers. you need to modify this part of mtlfx.c (I left there old code as commented out):
function fx_mirror()
{
// do nothing if mirror is already running
if (bmap_mirrortarget)
{
// my.material.skin2 = bmap_mirrortarget;
// return;
ptr_remove(bmap_mirrortarget); // *** correct mirror shift on multiple level loads
mw_bmap_mirrortarget = NULL;
}
bmap_mirrortarget = bmap_createblack(256,256,888);
...
another issue you can see is the shifted mirror view thanks to bmap_to_uv in mw_mirror_water_init() that can be resolved by using for example mw_bmap_water_uv = bmap_to_normals(bmap_for_entity(my,1), 50); instead, or simply use a fine normal map and comment out bmap_to_uv.