Sachverhalt: A. A.a. A._ (geb. 1969), deutscher Staatsangehöriger, reiste am 6. November 2006 in die Schweiz ein. Er verfügt über eine Ausbildung als Schreiner (Gesellenbrief 1987) und als Bürokaufmann (1995). Von 2000 bis 2002 liess er sich zum IT-Systemkaufmann umschulen. Gestützt auf einen befristeten Arbeitsvertrag für eine Tätigkeit als Schreiner erhielt er am 8. Dezember 2006 eine Kurzaufenthaltsbewilligung EG/EFTA mit Gültigkeit bis 4. November 2007. Am 1. Oktober 2007 trat A._ eine unbefristete Stelle als Schreiner an, worauf ihm eine fünfjährige Aufenthaltsbewilligung EG/EFTA mit Gültigkeit bis am 4. November 2012 erteilt wurde. A.b. Seit Ende April 2008 wurde A._ aufgrund gesundheitlicher Beschwerden (u.a. chronische Rückenschmerzen aufgrund eines lumbovertebralen Syndroms) von ärztlicher Seite eine Arbeitsunfähigkeit bescheinigt. Mit Ausnahme eines zweiwöchigen Arbeitseinsatzes zu 50 % im Juni 2008 war A._ nicht mehr erwerbstätig. Ein erstes Gesuch um Zusprechung einer Invalidenrente wies die IV-Stelle Zürich am 28. April 2009 ab (IV-relevanter Gesundheitsschaden verneint). Diese Verfügung erwuchs unangefochten in Rechtskraft. Das zweite Gesuch wurde am 29. September 2010 abgewiesen (Invaliditätsgrad: 8 %). Die dagegen erhobene Beschwerde wies das Sozialversicherungsgericht des Kantons Zürich mit Urteil vom 27. April 2012 ab, wobei es von einer vollen Arbeitsfähigkeit in einer behinderungsangepassten Tätigkeit ausging und den Invaliditätsgrad von 8 % bestätigte. Auf ein drittes Leistungsbegehren trat die IV-Stelle Zürich am 6. Oktober 2014 nicht ein. Diese Verfügung erwuchs unangefochten in Rechtskraft. Ab 1. Juni 2010 war A._ vollumfänglich auf die Unterstützung der Sozialhilfe angewiesen. Die bezogenen Leistungen beliefen sich am 21. Januar 2016 auf rund Fr. 121'000.--. A.c. Am 25. Oktober 2012 verlängerte das Migrationsamt des Kantons Zürich die Aufenthaltsbewilligung EU/EFTA für ein Jahr und letztmals am 20. Dezember 2013 für ein weiteres Jahr bis zum 25. Oktober 2014. B. Am 24. Oktober 2014 ersuchte A._ erneut um Verlängerung der Aufenthaltsbewilligung EU/EFTA. Das Migrationsamt wies das Begehren am 21. Januar 2015 ab. Den dagegen erhobenen Rekurs wies die Sicherheitsdirektion des Kantons Zürich am 4. Februar 2016 ab. Das Verwaltungsgericht des Kantons Zürich bestätigte diesen Entscheid mit Urteil vom 20. April 2016, wobei es das Gesuch um unentgeltliche Rechtspflege wegen Aussichtslosigkeit abwies. C. Am 19. Mai 2016 erhebt A._ Beschwerde beim Bundesgericht mit dem Antrag, das angefochtene Urteil aufzuheben und die Aufenthaltsbewilligung um weitere zwölf Monate zu verlängern. In prozessualer Hinsicht ersucht er um Gewährung der unentgeltlichen Rechtspflege betreffend Gerichtskosten.