I had this problem, it's not because of leaks.
I sort of solved it by tieing the water brush to an entity (func_water_analog or func_brush, doesn't matter, can't remember) and set the origin to 0,0,0. This cause the water to render in the right place. However when moving the water as func_water_analog the water still renders in it's original place even though it's behavior shows its actually in the new place.
I had this problem, it's not because of leaks.
I sort of solved it by tieing the water brush to an entity (func_water_analog or func_brush, doesn't matter, can't remember) and set the origin to 0,0,0. This cause the water to render in the right place. However when moving the water as func_water_analog the water still renders in it's original place even though it's behavior shows its actually in the new place.