When I try in both directions, they have the same execution plan, so it seems that the query optimizer is smart enough to know that they are the same request and run it once ... So, both ways in okay i guess ...
, - :
Select * from (
SELECT *, [dbo].[myFunc] (X.Prop1) AS Width FROM X
) T
WHERE Width > 0