diff --git a/kwant/physics/leads.py b/kwant/physics/leads.py
index e7335a136035beb72a74cf90515536989ed73e18..2e8ea9f9f668c10e7647e83eea0bb6179785c250 100644
--- a/kwant/physics/leads.py
+++ b/kwant/physics/leads.py
@@ -380,9 +380,8 @@ def unified_eigenproblem(a, b=None, tol=1e6):
         # Propagating modes.
         propselect = (abs(abs(alpha) - abs(beta)) < eps * abs(beta))
 
-        warning_settings = np.seterr(divide='ignore', invalid='ignore')
-        ev = alpha / beta
-        np.seterr(**warning_settings)
+        with np.errstate(divide='ignore', invalid='ignore'):
+            ev = alpha / beta
         # Note: the division is OK here, since we later only access
         #       eigenvalues close to the unit circle