In my tb 1.4 I've found that this happens:
1) Order is made, stock is substracted --> Correct
2) Order is cancelled, stock is added --> Correct
3) Order is "reactivated", eg moved to "waiting for bank payment", stock is not substracted again --> Incorrect, stock should be subtracted
4) Order is cancelled, stock is added again --> Incorrect because stock was not substracted under 3).
Note: This also happens if the status was first moved to "cancelled" (stock added) and then "some status" (stock not subtracted) and then again "cancelled" (stock added).
Is this confirmed in other installations?