use canvas bounds instead of parent resolving loop