diff --git a/zip/zip.go b/zip/zip.go
index 4a02531..6b36e10 100644
--- a/zip/zip.go
+++ b/zip/zip.go
@@ -224,20 +224,9 @@
 	noCompression := args.CompressionLevel == 0
 
 	for _, fa := range args.FileArgs {
-		var srcs []string
-		for _, s := range fa.SourceFiles {
-			globbed, _, err := pathtools.Glob(s, nil, pathtools.DontFollowSymlinks)
-			if err != nil {
-				return err
-			}
-			srcs = append(srcs, globbed...)
-		}
+		srcs := fa.SourceFiles
 		if fa.GlobDir != "" {
-			globbed, _, err := pathtools.Glob(filepath.Join(fa.GlobDir, "**/*"), nil, pathtools.DontFollowSymlinks)
-			if err != nil {
-				return err
-			}
-			srcs = append(srcs, globbed...)
+			srcs = append(srcs, recursiveGlobFiles(fa.GlobDir)...)
 		}
 		for _, src := range srcs {
 			err := fillPathPairs(fa, src, &pathMappings, args.NonDeflatedFiles, noCompression)
