alternative viewport detection