diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc
index aa119c9..47c8d5f 100644
--- a/samples/pdfium_test.cc
+++ b/samples/pdfium_test.cc
@@ -498,7 +498,7 @@
   FORM_DoPageAAction(page, form, FPDFPAGE_AACTION_OPEN);
 
   if (options.send_events)
-    SendPageEvents(doc, form, events);
+    SendPageEvents(form, page, events);
 
   double scale = 1.0;
   if (!options.scale_factor_as_string.empty()) {
@@ -564,8 +564,6 @@
                size_t len,
                const Options& options,
                const std::string& events) {
-  fprintf(stderr, "Rendering PDF file %s.\n", name.c_str());
-
   IPDF_JSPLATFORM platform_callbacks;
   memset(&platform_callbacks, '\0', sizeof(platform_callbacks));
   platform_callbacks.version = 3;
@@ -606,7 +604,6 @@
   FPDF_AVAIL pdf_avail = FPDFAvail_Create(&file_avail, &file_access);
 
   if (FPDFAvail_IsLinearized(pdf_avail) == PDF_LINEARIZED) {
-    fprintf(stderr, "Linearized path...\n");
     doc = FPDFAvail_GetDocument(pdf_avail, nullptr);
     if (doc) {
       while (nRet == PDF_DATA_NOTAVAIL) {
@@ -626,7 +623,6 @@
       bIsLinearized = true;
     }
   } else {
-    fprintf(stderr, "Non-linearized path...\n");
     doc = FPDF_LoadCustomDocument(&file_access, nullptr);
   }
 
@@ -718,7 +714,8 @@
   FPDFAvail_Destroy(pdf_avail);
 
   fprintf(stderr, "Rendered %d pages.\n", rendered_pages);
-  fprintf(stderr, "Skipped %d bad pages.\n", bad_pages);
+  if (bad_pages)
+    fprintf(stderr, "Skipped %d bad pages.\n", bad_pages);
 }
 
 static void ShowConfig() {
@@ -745,6 +742,7 @@
 static const char usage_string[] =
     "Usage: pdfium_test [OPTION] [FILE]...\n"
     "  --show-config     - print build options and exit\n"
+    "  --send-events     - send input described by .evt file\n"
     "  --bin-dir=<path>  - override path to v8 external data\n"
     "  --font-dir=<path> - override path to external fonts\n"
     "  --scale=<number>  - scale output size by number (e.g. 0.5)\n"
@@ -818,6 +816,7 @@
         GetFileContents(filename.c_str(), &file_length);
     if (!file_contents)
       continue;
+    fprintf(stderr, "Rendering PDF file %s.\n", filename.c_str());
     std::string events;
     if (options.send_events) {
       std::string event_filename = filename;
@@ -828,10 +827,8 @@
         std::unique_ptr<char, pdfium::FreeDeleter> event_contents =
             GetFileContents(event_filename.c_str(), &event_length);
         if (event_contents) {
+          fprintf(stderr, "Sending events from: %s\n", event_filename.c_str());
           events = std::string(event_contents.get(), event_length);
-        } else {
-          fprintf(stderr, "Warning: no event file: %s\n",
-                  event_filename.c_str());
         }
       }
     }
diff --git a/testing/tools/run_corpus_tests.py b/testing/tools/run_corpus_tests.py
index 2c3c191..41d3c12 100755
--- a/testing/tools/run_corpus_tests.py
+++ b/testing/tools/run_corpus_tests.py
@@ -42,8 +42,7 @@
   # remove .pdf suffix
   cmd_to_run = common.DrMemoryWrapper(drmem_wrapper,
                                       os.path.splitext(input_filename)[0])
-  cmd_to_run.extend([pdfium_test_path, '--png', pdf_path])
-  # run test
+  cmd_to_run.extend([pdfium_test_path, '--send-events', '--png', pdf_path])
   error = common.RunCommand(cmd_to_run)
   if error:
     print "FAILURE: " + input_filename + "; " + str(error)
diff --git a/testing/tools/test_runner.py b/testing/tools/test_runner.py
index 6bd2d72..bc4ad05 100644
--- a/testing/tools/test_runner.py
+++ b/testing/tools/test_runner.py
@@ -91,7 +91,8 @@
 
   def TestPixel(self, input_root, pdf_path):
     cmd_to_run = common.DrMemoryWrapper(self.drmem_wrapper, input_root)
-    cmd_to_run.extend([self.pdfium_test_path, '--png', pdf_path])
+    cmd_to_run.extend([self.pdfium_test_path, '--send-events', '--png',
+                       pdf_path])
     return common.RunCommand(cmd_to_run)
 
 
