Generally I would consider the use of an unprefixed // as a bad smell in an XPath.
Try this:-
/DocText/WithQuads/Page/Word[text()='July' and Quad/P1/@X > 90]
Your problem is that you use the //P1[@X < 90]
which starts back at the beginning of the document and starts hunting any P1
hence it will always be true. Similarly //P1[@X > 90]
is always true.