Tueur professionnel, Jeffrey se voit confier un contrat par l'intermédiaire de son ami Sidney Fung : abattre, dans le Club "Nine", monsieur Lim, l'un des grands patrons de la mafia de Hong Kong. Au cours de la fusillade, Jeff blesse la chanteuse de l'endroit, Jenny, qui devient aveugle. Bouleversé, il prend la jeune fille sous sa protection et décide d'abandonner le métier.
Peu après, il accepte pourtant une dernière mission afin de pouvoir payer une greffe de la cornée à Jenny : tuer Tony Weng, un gros trafiquant de drogue associé de Lim. Jeff réussit à honorer son contrat au cours de la Fête du Dragon mais est poursuivi par l'inspecteur Li et son ami le sergent Randy Chang.
Cependant, des hommes de main ont été chargés d'éliminer Jeff à son tour. Une petite fille est grièvement blessée dans l'échange de coups de feu qui s'ensuit. Au risque de se faire arrêter, Jeff parvient à amener la petite fille dans un hôpital où elle sera sauvée. Désavoué par son chef pour ses méthodes peu orthodoxes, l'inspecteur Li rapproche les meurtres de Weng et de Lim. En surveillant Jenny, dont Jeff est tombé amoureux, Li tente sans succès de piéger le tueur ; une étrange complicité naît entre les deux hommes. Jeff réussit à connaître par son ami Sidney le nom de celui qui veut sa mort : Johnny Weng, le neveu de Tony, qui avait commandité l'assassinat de son oncle pour prendre sa place. Le rendant responsable de la mort de Randy, abattu par les hommes de Weng, Li rejoint Jeff dans l'église où il s'est réfugié. Désormais solidaires, Jeff et Li font face à l'armée de tueurs de Weng qui, après avoir supprimé Sidney, prend d'assaut l'endroit. Rendu aveugle à son tour, Jeff meurt et, de fureur, Li abat Johnny Weng à bout portant alors qu'il se trouve aux mains des forces de police.
Beau thème de deux hommes, ennemis au départ qui vont pourtant apprendre à se respecter au point de s'allier (scène chez Jenny, qui ne voit pas qu'ils sont armé, et qui les croit amis). Leur meilleur ami respectif est tué : Randy Chang pour l'inspecteur Li et, pour Jeffrey, un tueur qui s'est humilié pour récupérer l'argent et qui, torturé à mort, demande la mort pour ne pas crever comme un chien.
Scène tragique dans l'église : lors de l'assaut final, une colombe vient éteindre des cierges. Jeffrey atteint aux yeux meurt sans voir Jenny et Li abat le mafieux avant de se rendre.